【问题标题】:How to EXPECT_CALL a specific version of a method?如何 EXPECT_CALL 方法的特定版本?
【发布时间】:2023-02-21 23:57:44
【问题描述】:

我有一个具有相同命名方法的 2 个不同版本的类:

MOCK_METHOD0(CmdData, char*());
MOCK_CONST_METHOD0(CmdData, const char*());

如何为它们中的每一个设置 EXPECT_CALL?

它似乎只设置了对非常量版本的调用。

【问题讨论】:

    标签: googlemock


    【解决方案1】:

    使用 Const() 参数包装器:

    MockClass foo;
    EXPECT_CALL(foo, CmdData());         // Expectation for the non-const version
    EXPECT_CALL(Const(foo), CmdData());  // Expectation for the const version
    

    这在 Mocking Cookbook 的“Selecting Between Overloaded Functions”一节中有所介绍。

    【讨论】:

    • 由于 testing::Const() 返回一个 const 引用(就像 std::as_const()),如果您不需要期望调用非常量重载,也可以将 mock 定义为 const。然而,这不那么冗长并且更容易中断。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2018-06-27
    • 2020-09-07
    • 2021-10-09
    • 2017-06-11
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多