c++ - gmock 可以模拟未定义的方法吗?
问题描述
我有一个测试对象,我想调用EXPECT_CALL
一个实际对象中不需要的方法,是否可以模拟这种未定义的新方法?
struct MockObject {
MOCK_METHOD2(onRecv, void(void* buffer, size_t len));
};
MockObject
不从任何其他类继承。这是支持 gmock 的用例吗?
解决方案
据我所知,您在这里所拥有的是明确定义的行为。据我所知,MOCK_METHOD
宏所做的只是连接方法原型和设置期望所需的其他元素。因此,虽然MOCK_METHOD
宏系列主要用于开发从需要测试的类派生的模拟类,但您的实际使用本身对我来说看起来很理智。
虽然 google mocks 很简洁,但如果您发现有人在代码审查中抱怨这一点,您可以轻松编写自己的 mock 方法。
struct MockObject {
void onRecv(void* buffer, size_t len) {
buf_ = buffer;
len_ = len;
onRecvCallCount_++;
}
void * buf_;
size_t len_;
int onRecvCallCount_ = 0;
};
// actual test setup being
void Setup() {
mockObject.onRecvCallCount_ = 0
}
// The rest of the assertions/expectations get wrapped inside the
// if (mockObject.onRecvCallCount_) { } block
因此,google mock 宏通过提供简单的宏(如MOCK_METHOD
. 所以不要犹豫使用它。
推荐阅读
- python - 无法点击第一个建议或第一个值
- javascript - js:使用不同的参数加载相同的js代码
- python - MinimalModbus 批量读取超时
- ruby-on-rails - 如何为rails中的布局设置特定样式
- r - 在R中查找行值大于零的列索引
- javascript - 在 highcharts 中绘制多色自定义符号
- python - Python 没有“编码”模块错误
- java - npm install java: 错误 MSB4019: 未找到导入的项目“D:\Microsoft.Cpp.Default.props”
- html - 架构错误 - 多条评论应附有综合评分
- flux - Grafana 拉两个测量值结合了来自 influxdb 的 grafana 指标中的多个字段