reference - gmock 多个输入输出参数 SetArgReferee

标签 reference gmock

我有一个接口(interface)Itest:

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和一次返回值?

最佳答案

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

EXPECT_CALL(testobject, testfunction(_, _, _))
    .WillOnce(DoAll(SetArgReferee<0>(v), SetArgReferee<1>(i), Return(true)));
见谷歌模拟wiki CheatSheet了解更多信息。

关于reference - gmock 多个输入输出参数 SetArgReferee,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23156717/

相关文章:

c++ - 通过模板化类中的成员函数返回不可修改的引用

c++ - 使用 gmock Matchers 将 std::function 设置为 EXPECT_CALL 中的方法参数

cmake - 将外部源目录添加到 CMake 构建

c++ - GMock-模拟抽象类与另一个实现

c++ - const 引用和普通参数有什么区别?

c# - 在哪里添加 System.Windows.Media.GradientStopCollection 的引用

c++ - C++ gmock-如何在单元测试cpp文件中读取/获取cpp文件功能的参数值

java - gmock 可以模拟 Java 类的静态方法吗?选择?

c - 错误未定义对 'WinMain@16' 的引用

c++ - 引用抽象类的类的 copy-and-swap 习语