googlemock - 模拟返回复杂数据类型的方法
googlemock - mock a method that returns a complex 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 个"
我认为谷歌模拟宏不理解 QMap 并将逗号解释为参数分隔符。
有没有办法告诉谷歌模拟QMap是返回值?
只需使用这样的typedef
:
class aClass
{
public:
typedef const QMap<QString, QString> MyType;
virtual MyType aMethod() const;
}
class MockaClass : public aClass
{
public:
MOCK_CONST_METHOD0(aMethod, MyType());
}
你是对的,逗号被解释为参数分隔符。您可以定义预处理器宏来保护逗号不被这样解释。
#define COMMA ,
MOCK_CONSTANT_METHOD0(aMethod, const QMap<QString COMMA QString>());
请注意,这不一定适用于嵌套宏调用。例如,如果MOCK_CONSTANT_METHOD0
将第二个参数传递给另一个宏,您将再次遇到麻烦。
只需将()
用于复杂的参数,
class MockaClass : public aClass
{
public:
MOCK_METHOD((const QMap<QString, QString>), aMethod, (), (const));
}
相关文章:
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- 构造智能点数据类型以及普通数据类型的通用方法
- printf 数据类型说明符复杂问题
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- OpenSSL模块化最大数据类型大小的简单方法
- boost odeint 中的受控误差步进器是否支持复杂的数据类型?
- 使用各种数据类型成员创建对象的简便方法
- 复杂数据类型向量的迭代器
- 是否有任何数据类型或方法可以计算当前单元格中先前数组单元格的总和
- 正确的方法将功能限制为特定数据类型
- 当拥有倍数数据类型C 时,正确读取文件末尾的方法
- 使用正确的数据类型转换java中的c++方法逻辑
- 是否应该对复杂数据类型使用访问器
- 复杂C++数据类型和 COM
- googlemock - 模拟返回复杂数据类型的方法
- 复杂数据类型的模板实例化问题
- 模板链表获取复杂数据类型的数据元素
- 何时使用 std::complex<long double> vs. 自己的复杂数据类型(结构等)
- 用于基元和复杂数据类型的C++模板析构函数