2014-04-18 11 views
11

Tôi có một giao diện Itest:gmock nhiều trong-out thông số SetArgReferee

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

tôi có thể thử nó với:

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

nhưng làm thế nào tôi có thể thiết lập các giá trị trở lại?

tôi đã cố gắng:

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

nhưng sau đó nó được gọi là ba lần ..

Làm thế nào để thiết lập các argReferees và giá trị trả về một thời gian?

Trả lời

17

Bạn kết hợp một vài hành động cùng nhau sử dụng các hành động DoAll:

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

Xem Google Mock wiki để biết thêm.

Các vấn đề liên quan