rspecでfind_each呼び出しをテストする方法が不思議でした。私は単に私がこのようなDBにテストデータに依存しない、私は私のモデルを返すようにしたいものをスタブするために使用しています:レールでrspecテストのためにfind_eachをスタブする方法3
MyClass.stub(:find).and_return(my_mock)
しかし、別のクラスでは、私は、このやっている:
をスペックテストでMyClass.stub(:find_each).and_return([one_mock, two_mock])
、「ここで何かをやる」の部分が実行されていない:
MyClass.find_each do |instance_of_my_class|
do_stuff_here_on(instance_of_my_class)
end
は、私がこれを行う場合ことがわかります。誰でもrspecテストのためにfind_eachをスタブする方法を知っていますか?
これを行うと、次のエラーが発生します。 1のアリティでブロックする。 私は配列としてモックを渡すと問題はありませんが、find_eachブロックのinstance_of_my_classは配列であり、その中の要素ではありません。 – Aaron
'.and_yield(one_mock).and_yield(two_mock)'はどうですか? – zetetic
あなたは大丈夫です、zetetic - 私はあなたの訂正を含めるために私の答えを編集しました。 – Iain