2017-12-14 4 views
0
allow(object).to receive(:method).and_return(true, false, true, true, true) 

ループでこれらのブール値を追加するにはどうすればよいですか?Rspec loopでbooleanを追加する方法

私のコードは今、これは試してみてください。この

allow(object).to receive(:method).and_return(booleans[0], booleans[1], booleans[2], booleans[3], booleans[4]) 
+0

私はこれに気づいていませんが、 'and_return'に1つ以上の値を返すことができますか?それはどのように機能するのですか? –

+0

@JagdeepSingh n番目の呼び出しは、このように 'and_return'リストのn番目の値を取得します。値が指定されたより多くの呼び出しが行われた場合、それ以降の呼び出しのために最後の値が返され続けます –

+0

以下の解決策はあなたのために働いたのですか@ user3743992? –

答えて

0

ように見えている:

# Not sure if you can return more than 1 value from here 
allow(object).to receive(:method).and_return(*booleans) 

booleansの要素数は、引数の数が一致した場合、あなたの方法場合5.

、すなわちブール値の配列が返されたら、代わりにこれを行うことができます:

allow(object).to receive(:method).and_return(booleans) 
+0

あなたの解決策(*ブーリアン)は大変ありがとうございます。 –

+1

引数の数を一致させることはできません - ['and_return'](https://relishapp.com/rspec/rspec-mocks/docs/configuring-responses/returning-a-value)は_variable_個の引数をとります。各メソッドは、その後のスタブ付きメソッドの呼び出しの戻り値として使用されます。 – Stefan

+0

Cool。私はそれを知らなかった。ありがとう。 :) –

関連する問題