Vic*_*sky 11 c++ unit-testing mocking googlemock
我打算使用Google Mock.我需要捕获一个对象引用,以便随后可以从该对象调用一些方法.
Google Mock有捕获能力吗?如果没有,C++单元测试的其他选择是什么?一种选择是创建我自己的捕获对象的模拟类.
我正在寻找类似于Java的EasyMock的东西.示例(不是真实代码):
Capture<MyObject> capture;
EXPECT_CALL(myInterface, access(capture));
instanceUnderTest.setAccessPoint(myInterface);
instanceUnderTest.run();
MyObject &capturedObject = capture.getValue();
EXPECT_EQ(ACCESS_IN_PROGRESS, capturedObject.getState());
Run Code Online (Sandbox Code Playgroud)
您可以编写自定义操作以通过引用捕获方法参数(有一个标准SaveArg操作可以按值捕获一个).但是你想要的东西可以用更简单的方式实现:
using testing::Property;
using testing::Eq;
EXPECT_CALL(myInterface,
access(Property(&MyObject::getState, Eq(ACCESS_IN_PROGRESS))));
Run Code Online (Sandbox Code Playgroud)