2014-04-18 41 views
11

我有一個接口ITEST:gmock多個進出參數SetArgReferee

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

我可以嘲笑它:

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

,但我怎麼可以設定的返回值?

我想:

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

但隨後它被稱爲三次..

如何設置這些argReferees和返回值的一個時間?

回答

17

您結合在一起使用DoAll動作幾個動作:

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

見谷歌模擬wiki獲取更多信息。