我打算使用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());
答案 0 :(得分:8)
您可以编写自定义操作以通过引用捕获方法参数(有一个标准的SaveArg
操作来按值捕获)。但是你想要的东西可以用更简单的方式实现:
using testing::Property;
using testing::Eq;
EXPECT_CALL(myInterface,
access(Property(&MyObject::getState, Eq(ACCESS_IN_PROGRESS))));