In meinem Rails-Controller erstelle ich mehrere Instanzen derselben Modellklasse. Ich möchte einige RSpec-Erwartungen hinzufügen, damit ich testen kann, ob es die richtige Zahl mit den richtigen Parametern erzeugt. So, hier ist das, was ich in meinem spec haben:Wie kann ich mithilfe von RSpec mehrere sust_receive-Erwartungen an ein Objekt hinzufügen?
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)
Diese Probleme verursacht, weil es scheint, dass die Bandmate Klasse nur 1 haben kann „should_receive“ Erwartung auf sie gesetzt. Also, wenn ich das Beispiel laufen lasse, erhalte ich folgende Fehlermeldung:
Spec::Mocks::MockExpectationError in 'BandsController should create all the bandmates when created' Mock 'Class' expected :create with ({:band_id=>1014, :user_id=>999, :position_id=>1, :is_leader=>true}) but received it with ({:band_id=>1014, :user_id=>"2222", :position_id=>"2"})
Das sind die richtigen Parameter für den zweiten Aufruf zu schaffen, aber RSpec testet gegen die falschen Parameter.
Weiß jemand, wie ich meine sent_receive-Erwartungen einrichten kann, um mehrere verschiedene Anrufe zu ermöglichen?
Das sollte funktionieren. Welche Version von RSpec verwenden Sie? Versuchen Sie, die stubed-Methoden der Reihe nach aus der Spezifikation aufzurufen (Bandmate.create (...: user_id => @ user.id ...); Bandmate.create (...: user_id => "2222" ...); ...) und sehen, ob es funktioniert. –