すべての仕様で単にメソッドをスタブ化し、呼び出されるたびに正しい引数を受け取ることを確認したい場合 (それぞれの場合で同じであると仮定して)、ブロックspec_helper
内にスタブを追加するだけです。before(:each)
RSpec.configure do |config|
...
config.before(:each) do
SomeClass.stub(:some_static_method).with(...).and_return(...)
end
...
end
指定した引数以外でスタブが呼び出された場合、これは失敗します。should_receive
@appneadiving が提案したように使用することもできますが、呼び出さany_number_of_times
なくても失敗しないように呼び出す必要があることに注意してください。これは基本的にスタブを使用する場合と同じです (このディスカッションを参照) 。 .
もう 1 つの方法は、webmock gem を使用して、特定の URL へのリクエストをスタブ化することです。このアプローチを使用すると、(必ずしも) メソッドをスタブする必要はありません。指定した引数でサーバーにアクセスしようとするたびに、特定の応答を取得するという確実性で、通常どおり実行させることができます。
仕様全体で webmock を使用するには、spec_helper
上記のような行を追加して、stub_request
メソッドを呼び出す必要があります。
stub_request(:any, "www.example.com").with(:query => { :a => "b"}).to_return(...)
それが役立つことを願っています。