wxWidgets と組み合わせて Google Mock を使って運が良かった人はいますか? 次のように、シグネチャで wxString への const 参照を取るセッターを持つクラス Foo があります。
class Foo {
public:
Foo();
virtual ~Foo();
void setName(const wxString& name);
};
次に、次のように Foo をモックします。
class MockFoo : public Foo {
MOCK_METHOD1(setName, void(const wxString& name));
};
私の他のモックは問題なく動作しますが、wxString パラメータには気に入らない点があります。コンパイルすると、次のように表示されます。
C:\gmock-1.6.0\gtest\include\gtest\internal\gtest-internal.h:890: error: conversion from `const wxUniChar' to `long long int' is ambiguous
C:\wxWidgets-2.9.0\include\wx\unichar.h:74: note: candidates are: wxUniChar::operator char() const
C:\wxWidgets-2.9.0\include\wx\unichar.h:75: note: wxUniChar::operator unsigned char() const
//more potential candidates from wxUniChar follow after that
要するに、wxUniChar が提供する operator() 関数は Google Mock が期待するものにマップされないため、Google Mock はどの operator() 関数を呼び出すかを判断できません。「long long int」および「testing::internal::BiggestInt」変換でこのエラーが発生します。