Reference gmock多个输入输出参数setargreferer

Reference gmock多个输入输出参数setargreferer,reference,gmock,Reference,Gmock,我有一个接口Itest: class Itest { bool testfunction(vector<int>& v, int& id); } class-Itest{ 布尔测试函数(向量&v、整数&id); } 我可以用以下方式来嘲弄它: MOCK_METHOD2(testfunction, bool(vector<int>&, int&)) 模拟方法2(testfunction,bool(vector&,int&))

我有一个接口Itest:

class Itest {
    bool testfunction(vector<int>& v, int& id);
}
class-Itest{
布尔测试函数(向量&v、整数&id);
}
我可以用以下方式来嘲弄它:

MOCK_METHOD2(testfunction, bool(vector<int>&, int&))
模拟方法2(testfunction,bool(vector&,int&)) 但是如何设置返回值呢

我试过:

vector<int> v;
int i;
EXPECT_CALL(testobject, testfunction(_,_, _))
            .WillOnce(testing::SetArgReferee<0>(v))
            .WillOnce(testing::SetArgReferee<1>(i))
            .WillOnce(Return(true));
向量v; int i; 期望调用(testobject,testfunction(u,u,u)) .WillOnce(测试::SetArg裁判(v)) .WillOnce(测试::SetArg裁判(i)) .WillOnce(返回(true)); 但是它被称为三次


如何一次性设置这些
argreferers
和返回值?

您可以使用
DoAll
操作将多个操作组合在一起:

EXPECT_CALL(testobject, testfunction(_, _, _))
    .WillOnce(DoAll(SetArgReferee<0>(v), SetArgReferee<1>(i), Return(true)));
EXPECT_调用(testobject,testfunction(u,u,u))
.WillOnce(DoAll(setargreference(v)、setargreference(i)、Return(true));
更多信息请参见谷歌模拟