作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
有没有比重复使用 WillOnce
更简洁和/或更简洁的方法来设置多个相同的操作?例如,有没有办法让 WillRepeatedly
具有基数?
我只能找到链接 WillOnce
的示例,后面可能跟一个 WillRepeatedly
,这对于我可能想要返回第一个 N 的值的情况来说不太理想调用函数的次数,然后最后一次返回不同的值,例如在以下示例中使用 mock 表示 obj 并让它循环 N 次:
while (obj.IsDone())
{
SomeAction(obj.NextItem());
}
最佳答案
您可以使用 Times
.
// This is the final call
EXPECT_CALL(obj, IsDone())
.WillOnce(Return(true));
// These are the intermediate calls
EXPECT_CALL(obj, IsDone())
.Times(N)
.WillRepeatedly(Return(false))
.RetiresOnSaturation();
模拟对象的 IsDone
方法将在前 N 次被调用时返回 false。之后,最近的期望已经得到满足,所以我们使用RetiresOnSaturation
指示它不再申请。 .对 IsDone
的后续调用将由第一个期望处理,使其返回 true。如果再调用它,测试将失败。
如果省略 RetiresOnSaturation
,则第二个期望将继续适用;它会继续返回 false,并且您会收到消息提醒您“过度饱和和活跃”的预期失败了。
关于c++ - 在 GoogleMock 中实现 WillN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14863918/
有没有比重复使用 WillOnce 更简洁和/或更简洁的方法来设置多个相同的操作?例如,有没有办法让 WillRepeatedly 具有基数? 我只能找到链接 WillOnce 的示例,后面可能跟一个
我是一名优秀的程序员,十分优秀!