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 の「BandsController は、作成時にすべてのバンドメイトを作成する必要があります」 モック 'クラス' は :create with ({:band_id=>1014, :user_id=>999, :position_id=>1, :is_leader=>true}) を期待していましたが、({:band_id=>1014, :user_id=) で受け取りました>"2222", :position_id="2"})
これらは作成する 2 番目の呼び出しの正しいパラメーターですが、RSpec は間違ったパラメーターに対してテストしています。
複数の異なる呼び出しを許可するように should_receive の期待を設定する方法を知っている人はいますか?