У меня есть функция сетевого API send
, которую необходимо смоделировать с помощью следующей подписи.
virtual void send(const RestRequest &req, RestResponse &resp) = 0;
Этот вызов возвращает ответ в выходном параметре RestResponse. В моем тестовом коде ожидается, что этот вызов будет вызываться 2 раза, но, очевидно, с другим входным значением req
и другим выходным значением в качестве отклика в параметре resp
.
Я установил свои ожидания следующим образом:
RestRequest ReqObj1= createRequest();
RestRequest ReqObj2= createRequest();
RestResponse RespObj1 = createResponse();
RestResponse RespObj2 = createResponse();
{
InSequence seq;
EXPECT_CALL(*mockedConn, send(ReqObj1,_))
.WillOnce(SetArgReferee<1>(RespObj1));
EXPECT_CALL(*mockedConn, send(ReqObj2,_))
.WillOnce(SetArgReferee<1>(RespObj2));
}
Первый send
отлично высмеивается, и я получаю outparam, установленный как RespObj1, но второй вызов не поддразнивается. Похоже, gmock не может различить ч / б ожидания, о которых говорилось, и одно затмевает другое.
Как мне сказать gmock, чтобы они раздельно обрабатывали два ожидания?