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