У меня это в тесте
Project.should_receive(:find).with(@project).and_return(@project)
но когда объект получает вызов этого метода два раза, я должен сделать
Project.should_receive(:find).with(@project).and_return(@project)
Project.should_receive(:find).with(@project).and_return(@project)
Есть ли способ сказать что-то вроде
Project.should_receive(:find).with(@project).and_return(@project).times(2)
ruby-on-rails
rspec
Якуб Арнольд
источник
источник
any_instance
?Новый
expect
синтаксис rspec будет выглядеть так:2 раза:
ровно n раз:
не менее n раз:
источник
have_received
Синтаксис работает также.expect(Project).to have_received(:find).exactly(n).times
и т. д.@JaredBeck указал. Решение не помогло мне по
any_instance
вызову.В любом случае я использовал заглушку вместо should_receive.
Это будет работать в любом случае. хотя раз.
источник
should_receive
, в отличие отany_instance
, ожидает, что класс получит сообщение указанное количество раз.any_instance
с другой стороны, обычно используется для заглушки метода.Итак, первый случай - это ожидание, которое мы хотели бы протестировать, а второй - прохождение метода к следующей строке, чтобы мы могли двигаться дальше.
источник