Я пишу тестовый пример, используя гугл макет. Я пытаюсь вернуть объект ответа с помощью SetArgPointee <> как часть насмешки;Но это не удалось скомпилировать из-за полиморфного объекта.
Есть ли другой альтернативный способ вернуть ответ для аргумента фиктивной функции, который является полиморфным объектом, используя макет google?
Ниже приведен фрагмент кода для получения ответа для API симуляции:
ResponseMessage resp(...);
EXPECT_CALL(*clientMock, SendHttpMessageToServer(_, _, _, _, _))
.WillOnce(testing::DoAll(testing::SetArgPointee<4>(resp), testing::Return(true)));
Здесь SendHTTPMessageToserver () отправляет http-сообщение на сервер. Я издевался над этим API, как показано ниже. Я ожидаю 4-й аргумент с некоторым ответом, как указано выше.
bool XYZSendMessage::SendHttpMessageToServer(LPCTSTR caller, ClientInternal* pClient, XYZMessage& msg, XYZMessage& resp,
GUID* pBundleGuid)
{
return clientMock->SendHttpMessageToServer(caller, pClient, msg, resp, pBundleGuid);
}
Ниже приведена ошибка компиляции:
error C2280: 'testing::PolymorphicAction<testing::internal::SetArgumentPointeeAction<3,XYZResponseMessage,false>>::PolymorphicAction(const testing::PolymorphicAction<testing::internal::SetArgumentPointeeAction<3,XYZResponseMessage,false>> &)': attempting to reference a deleted function
3>c:\XYZ\git\sa3rdparty\crossplatform\googletest\out\googletest-release-1.8.0\windows\x86_64\msvc15.0\static_mt\debug\include\gmock\gmock-actions.h(458): note: compiler has generated 'testing::PolymorphicAction<testing::internal::SetArgumentPointeeAction<3,XYZResponseMessage,false>>::PolymorphicAction' here
3>c:\XYZ\git\sa3rdparty\crossplatform\googletest\out\googletest-release-1.8.0\windows\x86_64\msvc15.0\static_mt\debug\include\gmock\gmock-actions.h(458): note: 'testing::PolymorphicAction<testing::internal::SetArgumentPointeeAction<3,XYZResponseMessage,false>>::PolymorphicAction(const testing::PolymorphicAction<testing::internal::SetArgumentPointeeAction<3,XYZResponseMessage,false>> &)': function was implicitly deleted because a data member invokes a deleted or inaccessible function 'testing::internal::SetArgumentPointeeAction<3,XYZResponseMessage,false>::SetArgumentPointeeAction(const testing::internal::SetArgumentPointeeAction<3,XYZResponseMessage,false> &)'
3>c:\XYZ\git\sa3rdparty\crossplatform\googletest\out\googletest-release-1.8.0\windows\x86_64\msvc15.0\static_mt\debug\include\gmock\gmock-actions.h(820): note: 'testing::internal::SetArgumentPointeeAction<3,XYZResponseMessage,false>::SetArgumentPointeeAction(const testing::internal::SetArgumentPointeeAction<3,XYZResponseMessage,false> &)': function was implicitly deleted because a data member invokes a deleted or inaccessible function 'XYZResponseMessage::XYZResponseMessage(const XYZResponseMessage &)'
3>c:\XYZ\git\dev-nrednam-hjagata-pi20-sputnik-new\sasource\XYZagent\agent\win\XYZclient\XYZmessage.h(413): note: 'XYZResponseMessage::XYZResponseMessage(const XYZResponseMessage &)': function was implicitly deleted because a base class invokes a deleted or inaccessible function 'XYZMessage::XYZMessage(const XYZMessage &)'
3>c:\XYZ\git\dev-nrednam-hjagata-pi20-sputnik-new\sasource\XYZagent\agent\win\XYZclient\XYZmessage.h(406): note: 'XYZMessage::XYZMessage(const XYZMessage &)': function was implicitly deleted because a base class invokes a deleted or inaccessible function 'ATL::CAtlList<XYZMessageItem *,ATL::CElementTraits<E>>::CAtlList(const ATL::CAtlList<E,ATL::CElementTraits<E>> &) throw()'
3> with
3> [
3> E=XYZMessageItem *
3> ]