14

のようなrspecテストでモックを使いたいです。

klass.any_instance.should_receive(:save).exactly(2).times.and_return(true)

しかし、次のようなエラーメッセージが表示されます:

「メッセージ「保存」は <#Object> によって受信されましたが、すでに <#Object> によって受信されています」

一時的にスタブを使用しますが、正確さのためにモックを使用したい

4

1 に答える 1

22

ドキュメントは次のany_instance.should_receiveとおりです。

Use any_instance.should_receive to set an expectation that one (and only one)
instance of a class receives a message before the example is completed.

したがって、 2 つのオブジェクトが呼び出しを 1 回save受信するのではなく、1 つのオブジェクトが呼び出しを 2 回受信するように指定しsaveました。

異なるインスタンスによって行われた呼び出しをカウントしたい場合は、次のように工夫する必要があります

save_count = 0
klass.any_instance.stub(:save) { save_count+=1 }
# run test
save_count.should == 2
于 2013-01-17T08:40:02.710 に答える