Минимальный stub_any_instance и методы?

#ruby-on-rails #minitest #stubs

#ruby-on-rails #минимальный тест #заглушки

Вопрос:

Если я сделаю

 Klass.stub_any_instance(:new, raise(RuntimeError) do
  ...
end
  

ошибка RuntimeError возникает в строке stub_any_instance, а не, как мне хотелось бы, позже, когда возникает Klass.new().

Есть ли способ заставить это работать так, как мне хотелось бы?

Ответ №1:

Оберните raise в лямбда-выражение:

 Klass.stub :new, -> { raise(RuntimeError) } do
  assert_raise { Klass.new }
end
  

(Вы также захотите использовать stub вместо stub_any_instance .)