2013-10-07 2 views
11
class Foo 
    def bar(a, b) 
    ... 

Foo.should_receive(:bar) 

は、引数を指定してbarを呼び出すことを想定しています。RSpec should_receiveでいくつかの(しかしすべてではない)引数を期待するには?

Foo.should_receive(:bar).with(:baz, :qux) 

予想:bazと:quxがパラメータとして渡されます。

最初のパラメータが等しくなるようにする方法:baz、他のパラメータは気にしないでください。

答えて

23

anythingマッチャーを使用しますので、hash_including(:key => val)で試してみてください、あなたのメソッドは、引数としてハッシュを受信して​​いるときは動作しませんanything RSPEC 1.3 については

Foo.should_receive(:bar).with(:baz, anything) 
+2

これは機能します。警告は、各パラメータごとに1つの 'anything'が必要なことです。 –

+2

私はそれが後で追加されたかどうか分かりませんが、RSpecは 'bar(a、b、c)'に対して 'Foo.should_receive(:bar).with(:baz、any_args)'を実行できるようにany_argsを持っています。 – rubyprince

+0

@rubyprince非常に、素晴らしいヒント! –

0

を:

Connectors::Scim::Preprocessors::Builder. 
    should_receive(:build). 
    with(
     hash_including(:connector => connector) 
    ). 
    and_return(preprocessor) 
} 
関連する問題