有没有比重复使用WillOnce更简洁和/或更简洁的方法来设置多个相同的操作?举个例子,有没有办法让WillRepeatedly拥有基数?
我只能找到这样的例子:WillOnce后面可能跟着一个WillRepeatedly,这不太理想,因为我可能想要在函数被调用的前N次返回一个值,然后在最后一次返回一个不同的值,例如在下面的例子中使用模拟来表示obj,并让它循环N次:
while (obj.IsDone())
{
SomeAction(obj.NextItem());
}发布于 2013-02-14 06:50:45
您可以使用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,并且您将收到警告消息,提醒您“过饱和和活跃”的期望正在失败。
https://stackoverflow.com/questions/14863918
复制相似问题