有没有人在使用 Google Mock 和 wxWidgets 时遇到过运气?我有一个类 Foo ,其设置器在签名中对 wxString 进行 const 引用,如下所示:
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
要点是 Google Mock 无法确定调用哪个 operator() 函数,因为 wxUniChar 提供的 operator() 函数没有映射到 Google Mock 所期望的。我在“long long int”和“testing::internal::BiggestInt”转换中看到了这个错误。