Je me demandais comment tester un appel find_each dans rspec. Je suis habitué à tout simplement ce que je veux stubbing mes modèles pour revenir, donc je ne repose pas sur des données de test dans la db comme ceci:Comment puis-je trouver find_each pour les tests rspec dans les rails 3
MyClass.stub(:find).and_return(my_mock)
Cependant, dans une autre classe que je fais ceci:
MyClass.find_each do |instance_of_my_class|
do_stuff_here_on(instance_of_my_class)
end
je trouve que si je fais ceci:
MyClass.stub(:find_each).and_return([one_mock, two_mock])
dans le test de spécification, la partie « faire des choses ici » n'est pas en cours d'exécution. Est-ce que quelqu'un sait comment souder un find_each pour les tests rspec?
Cela provoque l'erreur suivante: | my mocks in ici | bloquer avec l'arité de 1. Si je mets les mocks en tant que tableau, il n'y a pas de problème mais l'instance_of_my_class dans le bloc find_each est le tableau et non les éléments qui s'y trouvent. – Aaron
Que diriez-vous de '.and_yield (one_mock) .and_yield (two_mock)'? – zetetic
vous avez raison, zetetic - Je m'assurerai de tester mon conseil la prochaine fois :) J'ai édité ma réponse pour inclure votre correction. – Iain