0

Ruby 仕様では、3 つの instance_double が定義されています。

let(:doub1) { instance_double(Foo) }
let(:doub2) { instance_double(Foo) }
let(:doub3) { instance_double(Foo) }

shared_example は、いずれかの instance_double でコラボレーターが使用されるようにします。

shared_examples :a_consumer_of_bars do
  it "passes a Foo to the BarGetter" do
    expect(BarGetter).to receive(:fetch_bar)
      .with((condition1 || condition2 || condition3)).at_least(:once)
    subject
  end
end

(パイプ||引数||アプローチ) は機能しません。引数が配列の要素と一致するかどうかをチェックする既存の rspec マッチャーはありますか? それとも、カスタム マッチャーを作成するのがよいのでしょうか?

4

2 に答える 2

0

既存のマッチャーが要件を満たしていない場合は、期待値にブロックを渡し、引数で期待値を実行できます

expect(BarGetter).to receive(:fetch_bar) do |arg|
  expect([condition1, condition2, condition3]).to include(arg)
end
于 2018-03-12T10:35:56.157 に答える