【发布时间】:2023-02-21 23:57:44
【问题描述】:
我有一个具有相同命名方法的 2 个不同版本的类:
MOCK_METHOD0(CmdData, char*());
MOCK_CONST_METHOD0(CmdData, const char*());
如何为它们中的每一个设置 EXPECT_CALL?
它似乎只设置了对非常量版本的调用。
【问题讨论】:
标签: googlemock
我有一个具有相同命名方法的 2 个不同版本的类:
MOCK_METHOD0(CmdData, char*());
MOCK_CONST_METHOD0(CmdData, const char*());
如何为它们中的每一个设置 EXPECT_CALL?
它似乎只设置了对非常量版本的调用。
【问题讨论】:
标签: googlemock
使用 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。然而,这不那么冗长并且更容易中断。