14

我想在 rspec 测试中使用 Mocks。

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

但我收到一条错误消息,例如:

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

临时我使用存根,但为了准确性想使用模拟

4

1 回答 1

22

文档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
于 2013-01-17T08:40:02.710 回答