HippoMocks 通过引用模拟返回值
HippoMocks mocking return values by ref
class IEmployeeServiceProxy
{
public:
virtual ~IEmployeeServiceProxy() { }
virtual void AddEmployee(const Employee&) = 0;
virtual int GetEmployees(std::vector<Employee>&) = 0;
};
struct Employee
{
boost::uuids::uuid Id;
std::string Name;
};
m_Mocks.ExpectCall(m_EmpSvcMock.get(), IEmployeeServiceProxy::GetEmployees).Return???;
如何模拟它,以便它通过参数而不是 int(这是方法的返回类型(返回 std::vector?
另外,如果有超过 1 个 ref 参数怎么办?
你必须自己为引用提供对象,确保模拟使用With
使用它,你可以改变它,将一个函数传递给Do
,这也提供了返回值。有多少参考参数并不重要。例:
int AddSomeEmployees( std::vector< Employee >& v )
{
v.push_back( Employee() );
return 0;
}
//test code
std::vector< int > arg;
mocks.ExpectCall( empSvcMock, IEmployeeServiceProxy::GetEmployees ).With( arg ).Do( AddSomeEmployees );
请注意,Do
可以接受任何类型的函数,也可以是 std::function、lambda 等。
Git 版本(最新版本(有一个 Out 参数选项,几乎就是这个。要使用
std::vector<int> args; args.push_back(1); args.push_back(2);
mocks.ExpectCall(mock, IInterface::function).With(Out(arg));
相关文章:
- 从python中调用C++函数并获取返回值
- 为什么模板类中的对象不能返回值
- 返回值优化:显式移动还是隐式
- lock_guard是否保护返回值
- 调用CreateProcess()并获取字符串的返回值
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 查找 GCD:并非所有控制路径都返回值
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 如何从 std::thread 返回值
- 将返回值从 exe 传递到 bat,并将其传递给 C# 中的进程
- 方法错误"not all control paths return a value"和方法不返回值
- 如何读取 C++ SAFEARRAY**,该 SAFEARRAY** 是 COM 互操作的结果,其中 C# 返回值为
- 对fread的返回值感到困惑
- 程序不向函数返回值
- 基于参数值的C++伪/模拟返回值
- HippoMocks 通过引用模拟返回值
- GMock - 如何刷新模拟返回值
- GMock:如何返回模拟类变量作为返回值