我想模拟一个返回复杂数据类型的方法
class aClass
{
public:
virtual const QMap<QString, QString> aMethod() const;
}
class MockaClass : public aClass
{
public:
MOCK_CONST_METHOD0(aMethod, const QMap<QString, QString>());
}此代码不能编译:“宏"MOCK_CONST_METHOD0”传递了3个参数,但只接受2个参数“
我认为googlemock宏不理解QMap,并将逗号解释为参数分隔符。
有没有办法告诉googlemock QMap是返回值?
发布于 2012-04-18 18:37:25
只需使用如下所示的typedef:
class aClass
{
public:
typedef const QMap<QString, QString> MyType;
virtual MyType aMethod() const;
}
class MockaClass : public aClass
{
public:
MOCK_CONST_METHOD0(aMethod, MyType());
}发布于 2012-04-18 18:28:54
您是对的,逗号被解释为参数分隔符。您可以定义一个预处理器宏来防止逗号被以这种方式解释。
#define COMMA ,
MOCK_CONSTANT_METHOD0(aMethod, const QMap<QString COMMA QString>());请注意,这不一定适用于嵌套宏调用。例如,如果MOCK_CONSTANT_METHOD0将第二个参数传递给另一个宏,您将再次遇到麻烦。
发布于 2022-02-22 07:07:06
只需对复杂参数使用(),
class MockaClass : public aClass
{
public:
MOCK_METHOD((const QMap<QString, QString>), aMethod, (), (const));
}https://stackoverflow.com/questions/10207490
复制相似问题