fishjam123 2021-11-24 16:30 采纳率: 50%
浏览 14
已结题

gmock 添加 SetArgPointee 之后就会报错:调用没有匹配的函数

对代码有所删改,如有语法错误请忽略。问题在于SetArgPointee 这个 函数,详情可见代码
这是原函数声明: 已经用virtual声明了 ,
class AlarmService
{
public:
virtual SWORD32 CurlPost(const char *pcURL, struct curl_slist *ptHeaders, void *pvFormData, size_t qwFormDataSize, ResponsHeaderData * ptResHeadData);
}
这是mock 类对上述函数的打桩
MOCK_METHOD5(CurlPost, SWORD32(const char *, struct curl_slist *, void *, size_t, ResponsHeaderData * ));

这是对该 CurlPost 函数的调用

TEST(XXX, XXXX)
{    
    AlarmService_Mock  *tAlarmServiceMockObj   = new AlarmService_Mock();
    
    ResponsHeaderData   tResHeadDataTest;
    memset(&tResHeadDataTest, 0, sizeof(ResponsHeaderData));

    CurlWriteData       tRespHeaderObjTest;
    CurlWriteData       tRespDataObjTest;

    tRespHeaderObjTest.m_pcData = "RespHeader";
    tRespHeaderObjTest.m_qwSize = 11;
    tRespDataObjTest.m_pcData = "RespData";
    tRespDataObjTest.m_qwSize = 9;
    tResHeadDataTest.m_tRespHeader = tRespHeaderObjTest;
    tResHeadDataTest.m_tRespData   = tRespDataObjTest;
    
   ResponsHeaderData* a = (ResponsHeaderData*)&tResHeadDataTest;
  
   EXPECT_CALL(*tAlarmServiceMockObj, CurlPost(_, _, _, _, _)).WillRepeatedly(Return(0));  //这里没问题
   EXPECT_CALL(*tAlarmServiceMockObj, CurlPost(_, _, _, _, _)).WillRepeatedly(SetArgPointee<4>(a), Return(0));  //一旦加上SetArgPointee<4>(a)就会报错
  
    tAlarmServiceMockObj->GetToken(strTokenValue); // GetToken会调用CurlPost,先需要CurlPost中的第五个出参 ResponsHeaderData * 用于后续判断
    delete tAlarmServiceMockObj;
}
 

报错:

img

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月2日
    • 创建了问题 11月24日

    悬赏问题

    • ¥15 嵌入式设备网口down后再up时不能link?
    • ¥15 关于区块链和边缘计算
    • ¥15 做一个简单项目,用Python分析共享单车的数据
    • ¥20 在使用CESM2.2.0模型进行case.submit过程中出现如下错误(关键词-Map)
    • ¥15 有办法改变通过wifi进入的网站的设置吗
    • ¥15 所以到底怎么算!算到凌晨五点都算不出来!
    • ¥15 label_studio
    • ¥15 请教如何phython发邮件
    • ¥15 linux系统安装问题
    • ¥15 路径规划如何采用矢量法让他们尽量在一个方向