C++ GoogleMock:如何根据另一个输入参数设置ArgReference?
我想使用GoogleMock模拟服务,如下所示:C++ GoogleMock:如何根据另一个输入参数设置ArgReference?,c++,unit-testing,googletest,googlemock,C++,Unit Testing,Googletest,Googlemock,我想使用GoogleMock模拟服务,如下所示: class Request { int req_id; int request; }; class Response { int req_id; int response; }; int request(Response& res, const Request& req) { res.req_id = req.req_id; res.response = 2 * req.requ
class Request
{
int req_id;
int request;
};
class Response
{
int req_id;
int response;
};
int request(Response& res, const Request& req)
{
res.req_id = req.req_id;
res.response = 2 * req.request;
return 1;
}
EXPECT_CALL(mock_service, request(_,_)).WillOnce(DoAll(SetArgReferee<0>(/* what here? */), Return(1)));
类请求
{
int REQU_id;
int请求;
};
班级反应
{
int REQU_id;
int响应;
};
int请求(响应和回复、常量请求和请求)
{
res.req_id=req.req_id;
res.response=2*req.request;
返回1;
}
EXPECT_CALL(模拟服务,请求(,)).WillOnce(DoAll(setargreference(/*what here?*/),Return(1));
如何根据传入的
const Request&req
,即res.req\u id=req.req\u id,设置响应&res
的参数代码>和res.response=2*req.request代码>?您的代码看起来不像是可以模仿的东西-但我想这只是问题的一个例子
因此,假设您在模拟类MockService中有模拟函数request
,然后将request
函数用作参数:
EXPECT_CALL(mock_service, request(_,_)).WillOnce(Invoke(&request));
如果您只想调用基类函数,请执行以下操作:
class mock_service_class : public service_class
{
public:
MOCK_METHOD2(request, int(Response& res, const Request& req));
int baseRequest(Response& res, const Request& req)
{
return service_class::request(res, req);
}
};
并以这种方式执行您的EXPECT\u调用
:
EXPECT_CALL(mock_service, request(_,_))
.WillOnce(Invoke(&mock_servide,
&mock_service_class::baseRequest));
也许我能帮上忙。