2012-02-22 24 views
3

私のクラスが適切な引数を使って模擬クラスのメソッドを呼び出すかどうかをテストします。私は基本的な期待を設定しました:出力パラメータのgooglemock matcher

// mListener is a mocked object 
// This expectation accepts any argument 
EXPECT_CALL(this->mListener, OnChanged(_)) 
    .Times(1); 

これは問題ありませんが、議論を検証したいと思います。これは、出力パラメータのみを使用するアクセサを持つオブジェクトです:

// aValue is an output parameter 
HRESULT get_Value(int* aValue); 

どのように私はget_ValueaValueに入れた値を検査しますマッチャーを定義することができますか?

答えて

3

あなたのような何かを試みることができる:それをチェックすることができ

MATCHER_P(CheckValue, 
      expected_value, 
      std::string("get_Value ") 
       + (negation ? "yields " : "doesn't yield ") 
       + PrintToString(expected_value) 
       + " as expected.") { 
    int result; 
    arg.get_Value(&result); 
    return expected_value == result; 
} 

を例えば

EXPECT_CALL(this->mListener, OnChanged(CheckValue(7))) 
    .Times(1); 
+0

パーフェクト、ありがとうございます:aValue == 7 googlemockのクックブックページにカスタムマッチャーに関する情報があります:http://code.google.com/p/googlemock/wiki/CookBook#Writing_New_Parameterized_Matchers_Quickly –

+0

またカスタム印刷コードを追加してテストが失敗したときに、私のオブジェクトの最初の数バイト。 http://code.google.com/p/googletest/wiki/AdvancedGuide#Teaching_Google_Test_How_to_Print_Your_Values –

関連する問題