如何验证两个char *是否在Google Mock中相等?

How can I verify if two char * are equal in Google Mock?

本文关键字:Mock Google 是否 char 验证 何验证 两个      更新时间:2023-10-16

假设我有一个这样的Mock:

class MockSocket : public Socket
{
public:
    MOCK_METHOD1(Write, bool(Packet *p));
};

并且我想测试是否使用满足以下条件的对象调用Write方法:

  • 1)当我在这个对象上调用get_QL()函数时,我收到0作为a返回值
  • 2)当我调用get_MAC()函数时,我收到一个uint8_t*我知道长度为6,但没有字符串终止符。

我如何在GMock中编写第二个条件?我试过这样做,但第二个属性不能正常工作。

EXPECT_CALL(ms, Write(AllOf(Property(&ESMCPacket::get_QL, 0), Property(&ESMCPacket::get_MAC, (mmac_source1))))).Times(1);

我不确定gMock是否有你需要的内存匹配器,但写一个自定义的是微不足道的:

MATCHER_P2(MatchesMemory, data, size, "") {
  return memcmp(arg, data, size) == 0;
}
EXPECT_CALL(
    ms,
    Write(AllOf(Property(&ESMCPacket::get_QL, 0),
                Property(&ESMCPacket::get_MAC, MatchesMemory("abcef", 6))))
    .Times(1);