Xav*_* V. 18 c++ templates mocking googlemock
我试图模仿一个模板化的方法.
这是包含模拟方法的类:
class myClass
{
public:
virtual ~myClass() {}
template<typename T>
void myMethod(T param);
}
Run Code Online (Sandbox Code Playgroud)
如何使用Google Mock模拟myMethod方法?
在以前版本的Google Mock中,您只能模拟虚拟功能,请参阅项目页面中的文档.
更新的版本允许使用他们称为hi-perf依赖注入的方式来模拟非虚方法.
作为congusbongus州:
Google Mock依赖于添加成员变量以支持方法模拟,并且由于无法创建模板成员变量,因此无法模拟模板函数
迈克尔·哈林顿(Michael Harrington)在评论中的googlegroups链接中的一种解决方法是专门设置模板方法,这些方法将调用可以模拟的普通函数.它没有解决一般情况,但它可以用于测试.
struct Foo
{
MOCK_METHOD1(GetValueString, void(std::string& value));
template <typename ValueType>
void GetValue(ValueType& value);
template <>
void GetValue(std::string& value) {
GetValueString(value);
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13617 次 |
| 最近记录: |