議論についての期待に応じて呼び出された方法について
質問
ダブルを作成しました。メソッドと巨大なハッシュを引数として呼び出すコードを実行しています。引数の1つのキーを確認してから、特定のハッシュを返します。
これは私がしているものです
before :each do
allow(@my_double).to receive(:do_stuff).and_return({stuff: 42})
end
it "can do stuff" do
expect(@my_double).to receive(:do_stuff) do |arg|
expect(arg).to be_a(Hash)
expect(arg[:my_arg]).to eq(3)
end
TestObject.stuff() # will invoke do_stuff on the double
end
.
do_stuff
が初めて呼び出されたのは、true
ブロックの結果であるが、後続の呼び出し(Palyでテスト済み)では、最初のコールが間違っているため、最初のコールが間違っているため、receive
が正しく返されます。戻ったときにCall{stuff: 42}
を試みるとき。
[:stuff]
を倍の動作を定義しようとしているので、allow
の下部に戻りたくないが、それの周りの方法はありますか?
解決
は、答えを考え出しています
expect(@my_double).to receive(:do_stuff).with(hash_including(my_arg: 3))
.
これはうまく機能します。
所属していません StackOverflow