c++ - 我们如何才能让 NiceMock<> 行为应用于单个方法?
问题描述
当在没有设置期望的情况下调用模拟方法时,gmock 会发出警告:
GMOCK WARNING:
Uninteresting mock function call - returning default value.
Function call: getAddress(@0x563e6bbf5530 16-byte object <F0-3A 32-6B 3E-56 00-00 30-A7 BF-6B 3E-56 00-00>)
Returns: ""
NOTE: You can safely ignore the above warning unless this call should not happen. Do not suppress it by blindly adding an EXPECT_CALL() if you don't mean to enforce the call. See https://github.com/google/googletest/blob/master/docs/gmock_cook_book.md#knowing-when-to-expect for details.
NiceMock<>
可以通过在注入模拟之前包装模拟来抑制此类警告。是否有可能获得相同的效果,但仅适用于 mock 上的某些方法?
例如,考虑这个模拟(使用旧版本的 gtest 编写):
class PocoMock : public Poco
{
public:
PocoMock() //
: Poco()
{
}
MOCK_CONST_METHOD1(listen, void(Poco::Net::ServerSocket& rSocket));
MOCK_CONST_METHOD1(start, void(Poco::Net::TCPServer& rServer));
MOCK_CONST_METHOD1(stop, void(Poco::Net::TCPServer& rServer));
MOCK_CONST_METHOD1(
getAddress,
std::string(const Poco::Net::StreamSocket& rSocket));
}
是否可以告诉 gmock 禁止有关意外调用的警告getAddress()
,但不能告诉listen()
,start()
和stop()
?
解决方案
您可以明确表示您可以拨打任意数量的电话getAddress
:
EXPECT_CALL(mock, getAddress(testing::_)).Times(testing::AnyNumber());
推荐阅读
- java - 如何从输入文件一次读取两行并将它们添加到对象中?
- python - 熊猫重新采样未按预期工作
- angular - Npm install 强制在升级到 Angular 7 后自己安装对等依赖项
- sql - Oracle:如何加入两个结果集查询(基于同一张表)然后减去结果?
- node.js - winston logstash udp 连接处理
- r - 删除 R 列表中空行后的所有内容
- sonarlint - 我应该从源代码管理中排除 .slconfig 吗?
- java - 如何防止 java.lang.OutOfMemoryError: GC 开销限制在 for 循环期间超出?
- c++ - C++ 17 中的并行执行策略
- css - 引导页脚 Z 索引