2013-05-07 52 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