2013-04-24 85 views
11

我打算使用Google Mock。我需要捕获一个对象引用,以便随后可以调用该对象的某些方法。是否可以使用Google Mock(gmock)捕获参数?

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()); 

回答

8

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

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