2013-05-07 54 views
2

如何模拟一个方法,该方法返回一个新对象,该对象的构造方法将该方法的参数之一作为自己的参数?将参数传递给ReturnNew with googlemock

// ObjectA::ObjectA(MockedObject arg1, ObjectB* arg2); 
// ObjectA* MockedObject::MockedMethod(ObjectB* arg); 
ON_CALL(mocked_object, MockedMethod(_)) 
    .WillByDefault(ReturnNew<ObjectA>(mocked_object, new ObjectB())); 

在上面的例子,而不是使用new ObjectB()作为ReturnNew<ObjectA>()的说法,我想用最初传递给MockedMethod_参数。

回答

1

我只用WithArgInvoke是lambda而非ReturnNew在这种情况下:

ON_CALL(mocked_object, MockedMethod(_)) 
    .WillByDefault(WithArg<0>(Invoke(
     [&mocked_object](ObjectB* b) { return new ObjectA(&mocked_object, b); }))); 
+0

我不能使用C++ 11,所以我只是调用的普通功能。谢谢! – 2013-05-08 12:14:29