使用googlemock将参数传递给ReturnNew

时间:2013-05-07 12:56:45

标签: 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>()的参数,而是使用最初传递给_的{​​{1}}参数。

1 个答案:

答案 0 :(得分:2)

在这种情况下,我只使用WithArgInvoke与lambda而不是ReturnNew

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