ruby-on-rails - 導入 - rspec 実行
How to say "should_receive"より多くの時間RSpec (3)
私はテストでこれを持っています
Project.should_receive(:find).with(@project).and_return(@project)
オブジェクトがそのメソッド呼び出しを2回受け取ると、私はしなければならない
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)
これは時代遅れです。 下のウリの答えを確認してください
2回:
Project.should_receive(:find).twice.with(@project).and_return(@project)
正確にn回
Project.should_receive(:find).exactly(n).times.with(@project).and_return(@project)
少なくともn回は:
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参照してhttps://www.relishapp.com/rspec/rspec-mocks/v/2-13/docs/message-expectations/receive-counts
希望する=)
@ JaredBeckは指摘した。 この解決策は、 any_instance
呼び出しで私にとってはany_instance
ませんany_instance
。
どのインスタンスでも、私はshould_receiveではなくstubを使用してしまいました。
Project.any_instance.stub(:some_method).and_return("value")
これはどんなno。 しかし、時間。
should_receive
とは対照的に、 any_instance
は、クラスが指定された回数だけメッセージを受信することを予期します。
一方、 any_instance
は一般的にメソッドをany_instance
するために使用されます。
したがって、最初のケースはテストすることを期待していますが、2番目のメソッドは次の行にメソッドを渡していますので、次に進むことができます。