Сначала создайте макет класса XXXClient
, назовем его 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
для вызова пользовательской фиктивной функции (с простой тестовой логикой) , вы можете увидеть здесь для более подробной информации.
Наслаждайся этим :)
Спасибо