Вот лучший ответ, позволяющий избежать необходимости переопределять метод: new:
save_count = 0
<Model>.any_instance.stub(:save) do |arg|
# The evaluation context is the rspec group instance,
# arg are the arguments to the function. I can't see a
# way to get the actual <Model> instance :(
save_count+=1
end
.... run the test here ...
save_count.should > 0
Кажется, что метод-заглушку может быть присоединен к любому экземпляру без ограничения, и блок do может сделать счетчик, который вы можете проверить, чтобы утверждать, что он вызывался нужное количество раз.
Обновление - новая версия rspec требует следующий синтаксис:
save_count = 0
allow_any_instance_of(Model).to receive(:save) do |arg|
# The evaluation context is the rspec group instance,
# arg are the arguments to the function. I can't see a
# way to get the actual <Model> instance :(
save_count+=1
end
.... run the test here ...
save_count.should > 0