【发布时间】:2016-02-15 21:04:31
【问题描述】:
我对 gmock 的工作方式很陌生。
我有一个带有 addEvent 方法的模拟,它通过指针获取 MyClass 类型的对象。我需要在这个对象上调用 MyClass::makeCall。
class SchedulerMock
{
public:
MOCK_CONST_METHOD1(addEvent, void(MyClass*));
};
我发现了这个话题: What is the easiest way to invoke a member function on an argument passed to a mocked function?
还有例子:
IFooable* ifooable = new IFooableImpl(...);
TMockFoo MockFoo;
ON_CALL(MockFoo, Foo(_))
.WithArg<0>(Invoke(&ifooable,&IFooable::Fooable));
但我不想在测试中创建的对象上调用方法。我想模拟在实际传递给模拟的对象上调用 makeCall 。 因此,我可以将我的模拟注入另一个将创建一些新对象的类,并在我的 schedulerMock 上调用 addEvent ,我希望这个模拟在每次有人在我的模拟上调用 addEvent 时在传递的参数上调用 makeCall 。 希望我说清楚了。
这可能吗?
【问题讨论】:
-
我对您想要做什么的理解有所了解...如果我误解了您,请通过小例子告诉我。
标签: c++ unit-testing googletest googlemock