Ответ 1
Сначала создайте класс XXXClient
mock, назовите его XXXClientMock
следующим образом:
class XXXClientMock : public XXXClient
{
public:
MOCK_METHOD2(QueryXXX, QueryResult (Request&, Response&));
};
Затем используйте GMock Action SetArgReferee
для установки настраиваемого параметра, как показано ниже:
TEST(XXXRunnerTC, SetArgRefereeDemo)
{
XXXCLientMock oMock;
// set the custom response object
Response oRsp;
oRsp.attr1 = "…";
oRsp.attr2 = "any thing you like";
// associate the oRsp with mock object QueryXXX function
EXPECT_CALL(oMock, QueryXXX(_, _)).
WillOnce(SetArgReferee<1>(oRsp));
// OK all done
// call QueryXXX
XXXRunner oRunner;
QueryResult oRst = oRunner.DoSomething(oMock);
…
// use assertions to verity your expectation
EXPECT_EQ("abcdefg", oRst.attr1);
……
}
Резюме
GMock обеспечивает ряд действий, чтобы удобно использовать функции, такие как SetArgReferee
для ссылки или значения, SetArgPointee
для указателя, Return
для возврата, Invoke
для вызова пользовательской функции макета (с простой тестовой логикой), вы можете увидеть здесь для более подробной информации.
Наслаждайся:) Спасибо вам