Rspec Mocks для any_instance ровно (n) раз

Я хочу использовать Mocks в тестах rspec, как.

klass.any_instance.should_receive(:save).exactly(2).times.and_return(true)

но я получаю сообщение об ошибке вроде:

"Сообщение" сохранить "было получено <#Object>, но уже было получено <#Object>"

Временно я использую заглушку, но для точности хочу использовать издевательства

1 ответ

Решение

Документация any_instance.should_receive является:

Use any_instance.should_receive to set an expectation that one (and only one)
instance of a class receives a message before the example is completed.

Итак, вы указали, что ровно один объект должен получить save вызовите два раза, и не 2 объекта должны получить save позвони один раз.

Если вы хотите посчитать звонки, сделанные в разных случаях, вам нужно проявить творческий подход, например:

save_count = 0
klass.any_instance.stub(:save) { save_count+=1 }
# run test
save_count.should == 2
Другие вопросы по тегам