如何在 const 方法上设置EXPECT_CALL

How to setup EXPECT_CALL on a const method?

本文关键字:设置 EXPECT CALL 方法 const      更新时间:2023-10-16

我想使用 GMock 为以下方法设置一个EXPECT_CALL

class Foo {
    virtual void Bar() const;
};

我定义相应的 Gmock 类如下:

class MockFoo : public Foo {
    MOCK_CONST_METHOD0(Bar, void());
};

然后,当然,我有这些类的对象。

Foo myFoo;
MockFoo myMockFoo;

在测试中,我声明EXPECT_CALL如下:

EXPECT_CALL(myFoo, Bar);

这不起作用,并且我收到编译错误:

'class Foo' has no member named 'gmock_Bar'

我似乎无法弄清楚如何EXPECT_CALL const方法。我在这里做错了什么?

我查看了备忘单和烹饪书,但无法弄清楚。

这个错误是我的疏忽,因为我的工作场所现有代码的复制粘贴错误。我将与社区分享这一点,以便将来可以帮助某人摆脱沮丧和浪费时间。

此错误与方法const性无关,但这是因为EXPECT_CALL的第一个参数不正确。将其从myFoo更改为myMockFoo以正确设置期望。

生成的 Mock 函数是 Mock 类MockFoo的成员,而不是实际的类Foo。因此,模拟对象应传递给EXPECT_CALL