私のRailsコントローラーでは、同じモデルクラスの複数のインスタンスを作成しています。RSpecの期待値をいくつか追加して、正しいパラメーターで正しい数を作成していることをテストできるようにします。 、これが私のスペックにあるものです:
Bandmate.should_receive(:create).with(:band_id => @ band.id、:user_id => @ user.id、:position_id => 1、:is_leader => true) Bandmate.should_receive(:create).with(:band_id => @ band.id、:user_id => "2222"、:position_id => 2) Bandmate.should_receive(:create).with(:band_id => @ band.id、:user_id => "3333"、:position_id => 3) Bandmate.should_receive(:create).with(:band_id => @ band.id、:user_id => " 4444 "、:position_id => 4)
Bandmateクラスには1つの「should_receive」期待値しか設定できないように見えるため、これが問題を引き起こしています。したがって、例を実行すると、次のエラーが発生します。
Spec :: Mocks :: MockExpectationError in'BandsControllerは、作成時にすべてのバンドメイトを作成する必要があります。 :position_id => 1、:is_leader => true})が、({:band_id => 1014、:user_id => "2222"、:position_id => "2"}) で受信しました。
これらは作成する2番目の呼び出しの正しいパラメーターですが、RSpecは間違ったパラメーターに対してテストしています。
複数の異なる呼び出しを許可するようにshould_receiveの期待値を設定する方法を知っている人はいますか?
複数の期待はまったく問題ではありません。あなたが直面しているのは、順序付けられていない期待に対する特定の引数を考えると、順序付けの問題です。注文の予想の詳細については、 このページ を確認してください。
短編小説は、それぞれの期待の最後に.ordered
を追加する必要があるということです。