googlemock - 嘲笑返回一个复杂的datatyp的方法(googlemock - moc

2019-09-16 15:13发布

我想嘲笑返回一个复杂的datatyp的方法

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是返回值?

Answer 1:

只需使用一个typedef是这样的:

class aClass
{
public:
   typedef const QMap<QString, QString> MyType;
   virtual MyType aMethod() const;
}

class MockaClass : public aClass
{
public:
   MOCK_CONST_METHOD0(aMethod, MyType());
}


Answer 2:

你说得对,逗号被解释为参数分隔符。 您可以定义一个预处理宏,以保护逗号被解释的方式。

#define COMMA ,
MOCK_CONSTANT_METHOD0(aMethod, const QMap<QString COMMA QString>());

请注意,这不一定会嵌套宏调用工作。 例如,如果MOCK_CONSTANT_METHOD0将第二个参数传递给另一个宏,你会再次陷入困境。



文章来源: googlemock - mock a method that returns a complex datatyp