【发布时间】:2013-05-22 21:46:34
【问题描述】:
在使用 EXPECT_CALL 语句执行 ON_CALL 语句时,有没有人在 gmock 中看到过奇怪的行为?对我来说,以下代码中的 EXPECT_CALL 语句不起作用(它实际上并没有强制执行 Times 部分):
ON_CALL(myMockObject, myMockMethod()).WillByDefault(Return("hello mock")));
EXPECT_CALL(myMockObject, myMockMethod()).Times(99999);
myMockObject.myMockMethod();
我尝试过的其他解决方案:
从超类覆盖 myMockMethod 并让它简单地返回一个字符串文字。问题是我无法确定它后来被调用了多少次。
跳过 ON_CALL 部分以支持这样的事情:
EXPECT_CALL(myMockObject, myMockMethod())
.Times(1)
.WillRepeatedly(Return("hello mock"));
这会导致编译错误。
另外值得注意的是,我在此示例中使用的字符串文字实际上是自定义的,gmock 无法为其提供默认值(例如 bool)。
【问题讨论】:
-
用
.Times(1)你试过WillOnce(Return("hello mock"))吗?
标签: c++ unit-testing gmock