2017-05-17 8 views
1

私は同じTEST_Fの同じモックオブジェクトでEXPECT_CALLを2回呼び出すとします。 。 。何が起こるのですか?google mock - 同じモックオブジェクトでEXPECT_CALLを何度も呼び出すことはできますか?

モックオブジェクトに期待値が追加されているのですか、または2番目の呼び出しで最初の呼び出しの効果が消去されますか?

私はThe After Clauseを見つけました。これは、同じモック+ EXPECT_CALLへの複数の呼び出しが許可されていることを暗示しているようです。 ForDummiesから

答えて

2

デフォルトで

、モックメソッドが呼び出されたときに、Googleのモックは、それらが定義されて逆の順序で 期待を検索し、引数に一致する アクティブ期待があるときに停止します(より新しい規則は古い規則を上書きすると考えることができます)。

TheSameArgumentsGoingToFailのテストでは、2番目の期待値が2回一致し、最初のものがまったくマッチしないため、失敗します。テスト 'DifferentArgumentsGoingToBeOk`が合格することに注意してください。

#include <gmock/gmock.h> 

using namespace ::testing; 

struct SomeMock 
{ 
    MOCK_CONST_METHOD1(foo, void(int)); 
}; 

TEST(Examples, TheSameArgumentsGoingToFail) 
{ 
    SomeMock mock; 

    EXPECT_CALL(mock, foo(4)); 
    EXPECT_CALL(mock, foo(4)); 

    mock.foo(4); 
    mock.foo(4); 
} 

TEST(Examples, DifferentArgumentsGoingToBeOk) 
{ 
    SomeMock mock; 

    EXPECT_CALL(mock, foo(4)); 
    EXPECT_CALL(mock, foo(5)); 

    mock.foo(4); 
    mock.foo(5); 
} 

あなたが同じパラメータ(InSequence usageRetiresOnSaturation)を持つ複数の期待を作成したい場合には、多数の技術を使用することができます。それは非常に頻繁に必要ではありません。

関連する問題