3

如何模拟返回一个新对象的方法,该对象的构造函数将方法的参数之一作为它自己的参数?

// 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

4

1 回答 1

2

我只是使用WithArgandInvoke一个 lambda 而不是ReturnNew在这种情况下:

ON_CALL(mocked_object, MockedMethod(_))
    .WillByDefault(WithArg<0>(Invoke(
        [&mocked_object](ObjectB* b) { return new ObjectA(&mocked_object, b); })));
于 2013-05-07T19:34:38.500 回答