如何在RSpec中多次说“should_receive”
我有这个在我的testing
Project.should_receive(:find).with(@project).and_return(@project)
但是当对象收到那个方法调用两次的时候,我必须这么做
Project.should_receive(:find).with(@project).and_return(@project) Project.should_receive(:find).with(@project).and_return(@project)
有没有办法像这样说
Project.should_receive(:find).with(@project).and_return(@project).times(2)
这已经过时了。 请检查下面的Uri的答案
2次:
Project.should_receive(:find).twice.with(@project).and_return(@project)
正好n次:
Project.should_receive(:find).exactly(n).times.with(@project).and_return(@project)
至lessn次:
Project.should_receive(:msg).at_least(n).times.with(@project).and_return(@project)
更多详情请参阅接收计数下的https://www.relishapp.com/rspec/rspec-mocks/v/2-13/docs/message-expectations/receive-counts
希望它有助于=)
rspec的新expect
语法如下所示:
2次:
expect(Project).to receive(:find).twice.with(@project).and_return(@project)
正好n次:
expect(Project).to receive(:find).exactly(n).times.with(@project).and_return(@project)
至lessn次:
expect(Project).to receive(:msg).at_least(n).times.with(@project).and_return(@project)
@JaredBeck指出。 这个解决scheme在any_instance
调用中不适用于我。
对于任何实例我结束了使用存根,而不是should_receive。
Project.any_instance.stub(:some_method).and_return("value")
这将工作任何没有。 时间虽然。
should_receive
,而不是any_instance
,期望类接收消息指定的次数。
另一方面any_instance
一般用于存根方法。
所以第一种情况是我们想要testing的期望,而第二种是通过一种方法到下一行,所以我们可以继续前进。