2014-04-18 8 views
11

Ho un'interfaccia Itest:gmock multiple in-out parametri SetArgReferee

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

posso prendere in giro con:

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

ma come posso impostare i valori di ritorno?

ho provato:

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

ma poi si è chiamato tre volte ..

Come faccio a impostare questi argReferees e il valore di ritorno una volta?

risposta

17

si combinano diverse azioni insieme con l'azione DoAll:

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

Sede Google Mock wiki per maggiori informazioni.