gmock 如何指定不应该调用其他模拟方法?
Posted
技术标签:
【中文标题】gmock 如何指定不应该调用其他模拟方法?【英文标题】:gmock how to specify that no other mocking methods should ever be called? 【发布时间】:2019-01-09 15:15:16 【问题描述】:我有一个模拟类,目前模拟了三个方法:
MOCK_METHOD0(method1, std::string());
MOCK_METHOD1(method2, bool(std::string str));
MOCK_METHOD1(method3, bool(std::string str));
...
在一个测试用例中,我希望方法 1 只在 mockClass 上调用一次,并且不应该通过指定 Times(0) 来调用其他模拟方法。
InSequence sequence;
EXPECT_CALL(*mockClass, method1(_)).WillOnce(doSomething());
EXPECT_CALL(*mockClass, method2(_)).Times(0);
EXPECT_CALL(*mockClass, method3(_)).Times(0);
但是,如果模拟类上的模拟方法数量非常多,我将不得不在这些模拟方法上写很多 .Times(0) ,我不希望它们被调用。
我认为,如果我省略所有这些 .Times(0),google test 将向控制台打印无趣的模拟函数调用,但这些是警告而不是错误,并且很难捕捉到。有没有一种简单的方法可以做到这一点?
【问题讨论】:
【参考方案1】:您可以使用StrictMock
- 请参阅link 以获取有关不同模拟变体的更多文档。
【讨论】:
以上是关于gmock 如何指定不应该调用其他模拟方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 gmock 模拟修改 C++ 类中的私有变量的成员函数?