この質問は Google グループで行いましたが、こちらの方が回答が早いと思います。
Google のモッキング フレームワークを使用してコードをテストしようとしています。私も彼らのテストフレームワークを利用しています。私はVC9でコンパイルしています。MFC\ATL CString である引数の一致に問題があります。GMock は、オブジェクトが等しくないと言い、ポインター アドレスで評価しているように見えます。私がモックしようとしているメソッドは、次のように構成されています。
void myMethod(const CString & key, const CString & value);
したがって:
MOCK_METHOD2(myMethod, void(const CString & key , const CString &
value);
私の期待を設定するとき、私は次の比較を行っています:
CString szKey = _T("Some key");
CString szValue = _T("Some value");
EXPECT_CALL(myMock, myMethod(Eq(szKey), Eq(szValue))).WillOnce(Return
(true));
次のようなマッチャーのさまざまな組み合わせを試しました。
EXPECT_CALL(myMock, myMethod(StrCaseEq(_T("Some Key")), StrCaseEq(_T
(""Some value)))).WillOnce(Return(true));
EXPECT_CALL(myMock, myMethod(TypedEq<const CString &>(szKey),
TypedEq<const CString &>(szValue))).WillOnce(Return(true));
EXPECT_CALL(myMock, myMethod(TypedEq<const CString &>(szKey),
TypedEq<const CString &>(szValue))).WillOnce(Return(true));
上記の呼び出しのいずれでも同じ結果が得られました。他の誰かがこの問題に遭遇しますか?
これは出力です:
Google Mock は次の 2 つの期待値を試しましたが、一致するものはありませんでした:
:80: tried expectation #0
Expected arg #1: is equal to 006D430C pointing to "Some value"
Actual: 4-byte object <A8EF 1102>
Expected: to be called once
Actual: never called - unsatisfied and active
:83: tried expectation #1
Expected arg #1: is equal to (ignoring case) ""
Actual: 4-byte object <A8EF 1102>
Expected arg #2: is equal to (ignoring case) "Some value"
Actual: 4-byte object <C0EE 1102>
Expected: to be called once
Actual: never called - unsatisfied and active
アダム