gpt4 book ai didi

c++ - 在 GoogleMock 中实现 WillN?

转载 作者:搜寻专家 更新时间:2023-10-31 01:50:35 25 4
gpt4 key购买 nike

有没有比重复使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com