gpt4 book ai didi

c++ - HippoMocks 通过 ref 模拟返回值

转载 作者:行者123 更新时间:2023-11-30 03:00:42 34 4
gpt4 key购买 nike

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 等。

关于c++ - HippoMocks 通过 ref 模拟返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11772970/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com