给定接口
class IFooable {
virtual void Fooable() = 0;
};
class IFoo {
virtual void Foo(IFooable* pFooable) = 0;
};
和古尔模拟模拟
class TMockFoo : public IFoo {
MOCK_METHOD1(Foo, void (IFooable*));
};
指定调用的操作的最简单方法是什么Fooable()
关于模拟方法的参数Foo()
?
我努力了
TMockFoo MockFoo;
ON_CALL(MockFoo, Foo(_))
.WithArg<0>(Invoke(&IFooable::Fooable));
但这不能编译,因为Invoke()
只有一个参数需要一个自由函数,而不是成员函数。
Using boost::bind
应该可以工作,但不一定会使代码太可读。在我写自定义之前Action
,我想检查一下我是否遗漏了一些完全明显的东西。
我无法测试它,因为我没有安装 Google Mock,但似乎Invoke
还有另一个带有两个参数的重载,即对象和方法指针,因此它将是:
IFooable* ifooable = new IFooableImpl(...);
TMockFoo MockFoo;
ON_CALL(MockFoo, Foo(_))
.WithArg<0>(Invoke(&ifooable,&IFooable::Fooable));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)