我々は(hereから取られた)のような複数のリターンを指定することができます。gmockで作ったモックのために複数のリターンを指定する方法がgmockで連続リターンを指定する方法は? Mockitoで
//you can set different behavior for consecutive method calls.
//Last stubbing (e.g: thenReturn("foo")) determines the behavior of further consecutive calls.
when(mock.someMethod("some arg"))
.thenReturn(new RuntimeException())
.thenReturn("foo");
//There is a shorter way of consecutive stubbing:
when(mock.someMethod()).thenReturn(1,2,3);
when(mock.otherMethod()).thenThrow(exc1, exc2);
ありますか?現在、私は持っている:私はgmockで複数のリターンを把握することはできませんので、コンパイルされません
store_mock_ = std::make_shared<StorageMock>();
ON_CALL(*store_mock_, getFileName(_)).Return("file1").Return("file2");
。これはgmockで可能ですか?そうでない場合は、この問題を解決する別の方法がありますか?
using ::testing::Return;...
EXPECT_CALL(turtle, GetX())
.WillOnce(Return(100))
.WillOnce(Return(200))
.WillOnce(Return(300));
しかし、私はON_CALL
で複数のリターンをあざけるために任意のドキュメントを発見していない:私たちはEXPECT
のような複数の戻り値ができることを発見しました。
期待の私の理解では、彼らは私たちが返すと期待されるものであり、実際に模擬兵によって返されるものではありません。それは間違っていますか?あなたの 'IncrementDummy'の例は本当に役に立ちます。複数のリターンを定義する最善の方法はそれほど複雑であると思う。 :( –
私はあなたが正しく理解していれば - はい、私の例は非常に人工的です - 私たちはアサーションによって何が返されるか決してテストしません - このメカニズムが働くことを示すためにこのテストを書いています。テストされたコード内から模擬関数が呼び出されることが予想される場合、 "戻り値"を設定する必要はありません。例えば、void関数が呼び出されると期待していることがよくあります。 – PiotrNycz