2014-04-18 16 views
11

Ich habe eine Schnittstelle Itest:gmock mehrere in-out-Parameter SetArgReferee

class Itest { 
    bool testfunction(vector<int>& v, int& id); 
} 

ich es mit verspotten:

MOCK_METHOD2(testfunction, bool(vector<int>&, int&)) 

aber wie kann ich die Rückgabewerte eingestellt?

Ich habe versucht:

vector<int> v; 
int i; 
EXPECT_CALL(testobject, testfunction(_,_, _)) 
      .WillOnce(testing::SetArgReferee<0>(v)) 
      .WillOnce(testing::SetArgReferee<1>(i)) 
      .WillOnce(Return(true)); 

aber dann wird es dreimal ..

genannt Wie kann ich diese argReferees und den Rückgabewert einer Zeit eingestellt?

Antwort

17

Sie kombinieren verschiedene Aktionen zusammen mit der DoAll Aktion:

EXPECT_CALL(testobject, testfunction(_, _, _)) 
    .WillOnce(DoAll(SetArgReferee<0>(v), SetArgReferee<1>(i), Return(true))); 

See Google Mock wiki für weitere Informationen.

Verwandte Themen