首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GoogleMock中实现WillN?

在GoogleMock中实现WillN?
EN

Stack Overflow用户
提问于 2013-02-14 05:55:51
回答 1查看 1.5K关注 0票数 2

有没有比重复使用WillOnce更简洁和/或更简洁的方法来设置多个相同的操作?举个例子,有没有办法让WillRepeatedly拥有基数?

我只能找到这样的例子:WillOnce后面可能跟着一个WillRepeatedly,这不太理想,因为我可能想要在函数被调用的前N次返回一个值,然后在最后一次返回一个不同的值,例如在下面的例子中使用模拟来表示obj,并让它循环N次:

代码语言:javascript
复制
while (obj.IsDone())
{
    SomeAction(obj.NextItem());
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-14 06:50:45

您可以使用Times

代码语言:javascript
复制
// 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,并且您将收到警告消息,提醒您“过饱和和活跃”的期望正在失败。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14863918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档