【发布时间】:2020-08-31 05:24:01
【问题描述】:
我想确保模拟方法覆盖基类虚拟方法。在生成标记为override的方法时,是否可以使用MOCK_METHOD的方式?
【问题讨论】:
标签: c++ overriding virtual googletest
我想确保模拟方法覆盖基类虚拟方法。在生成标记为override的方法时,是否可以使用MOCK_METHOD的方式?
【问题讨论】:
标签: c++ overriding virtual googletest
您可以通过像这样将 specs 参数指定给 MOCK_METHOD 来做到这一点,
MOCK_METHOD(void, foo, (), (override));
引用https://github.com/google/googletest/blob/master/googlemock/docs/cook_book.md#creating-mock-classes
前3个参数只是方法声明,分成3个 部分。第 4 个参数接受一个封闭的限定符列表,它 影响生成的方法:
- const - 使模拟方法成为 const 方法。如果重写 const 方法,则为必需。
- 覆盖 - 用覆盖标记方法。建议在覆盖虚拟方法时使用。
这是 Godbolt 上的 demo。
【讨论】: