是否可以使用Google Mock(gmock)捕获参数?

时间:2013-04-24 19:39:43

标签: 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());

1 个答案:

答案 0 :(得分:8)

您可以编写自定义操作以通过引用捕获方法参数(有一个标准的SaveArg操作来按值捕获)。但是你想要的东西可以用更简单的方式实现:

using testing::Property;
using testing::Eq;
EXPECT_CALL(myInterface,
            access(Property(&MyObject::getState, Eq(ACCESS_IN_PROGRESS))));