Рассмотрим следующие два тривиальных модели:Должен ли я сделать что-то, чего я не ожидаю?
class Iq
def score
#Some Irrelevant Code
end
end
class Person
def iq_score
Iq.new(self).score #error here
end
end
И следующий тест RSpec:
describe "#iq_score" do
let(:person) { Person.new }
it "creates an instance of Iq with the person" do
Iq.should_receive(:new).with(person)
Iq.any_instance.stub(:score).and_return(100.0)
person.iq_score
end
end
Когда я запускаю этот тест (или, вернее, аналогичный один), он появляется заглушка имеет не работает:
Failure/Error: person.iq_score
NoMethodError:
undefined method `iq_score' for nil:NilClass
Ошибка, как вы можете догадаться, находится на линии с надписью «error here» выше. Когда строка should_receive
закомментирована, эта ошибка исчезает. Что происходит?
Вы пытались удалить метод 'with' или добавить метод' and_return'? –
Удаление вызова 'with' не влияет. Что я буду использовать в качестве аргумента для 'и return', учитывая, что экземпляр' Iq' еще не создан? – hoffm
mock_model (Iq) .as_null_object –