如何在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的期望,而第二种是通过一种方法到下一行,所以我们可以继续前进。