GoogleMock和QString参数

时间:2015-11-05 08:28:09

标签: c++ qt qt5 googletest gmock

我试图将gmock用于自定义字符串类型。

我有一个QString参数的方法,我想模​​仿:

MOCK_METHOD1(getValue, int(QString key));

我设定了一个期望:

EXPECT_CALL(mock, getValue("someKey"));

出现错误:

error: no matching function for call to 'MyMock::gmock_getValue(const char[8])'

include/gmock/gmock.h:9339:20: note: in definition of macro 'GMOCK_EXPECT_CALL_IMPL_'
     ((obj).gmock_##call).InternalExpectedAt(__FILE__, __LINE__, #obj, #call)
 note: in expansion of macro 'EXPECT_CALL'

...

gmock/gmock.h:9730:7: note:   no known conversion for argument 3 from 'const char [6]' to 'const testing::Matcher<const QString&>&'
       gmock_##Method(GMOCK_MATCHER_(tn, F, 1) gmock_a1, \

但这有效:

EXPECT_CALL(mock, getValue(QString("someKey")));

如何使用字符串参数而不用QString()包装每个字符串文字?

1 个答案:

答案 0 :(得分:2)

由于"someKey"不是QString,因此错误报告为const char[8],Google Test / Mock要求2个类相同。

以同样的方式,编译器不知道值10是否应该是int32 int64,uint32或uint64,同样适用。