33

我想测试一些失败的情况下,不会在模拟对象上调用任何方法,使用谷歌模拟。所以代码是这样的:

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

4 回答 4

66

无需明确告知不会调用任何方法。如果您将日志记录级别设置得足够高,则在调用方法时应该会收到一条消息(如果没有设置期望值)。

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

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

在所有方法上。

于 2011-12-27T19:36:13.260 回答
23

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

于 2011-12-27T19:28:57.463 回答
5

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

基数将设置为零,因此您预计没有电话

于 2015-03-10T09:32:50.600 回答
0

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

在此处查看 Google Mock 文档。

于 2021-02-22T17:27:26.630 回答