2014-04-18 22 views
11

Mam interfejs iTest:gmock wielokrotność in-out parametry SetArgReferee

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

mogę wyśmiewać go:

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

ale jak mogę ustawić wartości zamian?

Próbowałem:

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

ale potem to się nazywa trzy razy ..

Jak mogę ustawić te argReferees a wartość powrotna jeden raz?

Odpowiedz

17

łączyć kilka działań wraz z wykorzystaniem działań DoAll:

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

Zobaczyć przez Google Mock wiki aby uzyskać więcej informacji.