谷歌模拟:我如何“预测”在模拟上不会调用任何方法

时间:2011-12-27 19:01:33

标签: c++ googletest googlemock

我想测试一些失败的情况下,不会使用google mock在模拟对象上调用方法。 所以代码类似于:

auto mocObj = new MockObj;
EXPECT_NO_METHOD_CALL(mocObj); //this is what I'm locking for

auto mainObj = new MainObj(mocObj , ......and other mocks); // here I simulate a fail using the other mock objects, and I want to be sure the no methods are called on the mockObj

4 个答案:

答案 0 :(得分:45)

没有必要明确告诉不会调用任何方法。如果将日志记录级别设置得足够高,则应该在调用方法时收到消息(如果未设置期望)。

除此之外,您可以设置这样的期望:

EXPECT_CALL( mockObj, Foo(_) ).Times(0);

所有方法。

答案 1 :(得分:15)

创建StrictMock;任何意外的方法调用都将失败。

答案 2 :(得分:2)

对所有类方法使用Exactly(0)。

基数将设置为零,因此您不希望接听电话

答案 3 :(得分:0)

您也可以使用 StrictMock 代替 NiceMock。这将在任何“无趣”的调用中失败,即,每当调用模拟的方法时,但未定义 EXPECT_CALL

请参阅 Google Mock 文档 here