Dans mon contrôleur Rails, je crée plusieurs instances de la même classe de modèle. Je veux ajouter quelques attentes RSpec afin que je puisse tester qu'il crée le bon nombre avec les paramètres corrects. Alors, voici ce que j'ai dans mon spec:Comment ajouter plusieurs attentes should_receive sur un objet en utilisant 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)
Cela est à l'origine des problèmes, car il semble que la classe Bandmate ne peut avoir 1 « should_receive » attente fixé sur elle. Alors, quand je lance l'exemple, je reçois l'erreur suivante:
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"})
Ce sont les paramètres corrects pour le deuxième appel à créer, mais RSpec est contre les tests des paramètres erronés.
Est-ce que quelqu'un sait comment je peux configurer mes attentes should_receive pour permettre plusieurs appels différents?
Cela devrait fonctionner. Quelle version de RSpec utilisez-vous? Essayez d'appeler les méthodes stubed en séquence à partir de la spécification (Bandmate.create (...: user_id => @ user.id ...); Bandmate.create (...: user_id => "2222" ...); ...) et voir si cela fonctionne. –