Rspec在any_instance上模拟完全(n)次

时间:2013-01-17 06:22:17

标签: ruby-on-rails rspec rspec-rails

我想在rspec测试中使用Mocks,如。

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

但是我收到如下错误消息:

'< #Object>收到消息“保存”但已收到< #Object>'

临时我使用存根,但准确性要使用模拟

1 个答案:

答案 0 :(得分:20)

any_instance.should_receive的{​​{3}}是:

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调用,而不是那两个对象应该一次接收save调用。

如果你想计算不同实例所做的调用,你必须documentation像:

save_count = 0
klass.any_instance.stub(:save) { save_count+=1 }
# run test
save_count.should == 2