11

我打算使用 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());
4

1 回答 1

8

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

using testing::Property;
using testing::Eq;
EXPECT_CALL(myInterface,
            access(Property(&MyObject::getState, Eq(ACCESS_IN_PROGRESS))));
于 2013-04-29T14:26:16.897 回答