gpt4 book ai didi

.net - 最小起订量 - 有序设置(预期)

转载 作者:行者123 更新时间:2023-12-03 18:18:40 25 4
gpt4 key购买 nike

我对最小起订量相当陌生,无法弄清楚如何订购设置。我有以下代码:

_orderRepository.Setup(r => r.Update(It.Is<Order>(a => ((int)a.OrderStatusReference.EntityKey.EntityKeyValues[0].Value) == 2)))
.Throws(exception)
.AtMost(5);

我希望这被执行 5 次(它的重试逻辑,如果更新失败)。第 5 次之后我想设置并期望它成功(不抛出异常):
_orderRepository.Setup(r => r.Update(It.Is<Order>(a => ((int)a.OrderStatusReference.EntityKey.EntityKeyValues[0].Value) == 2))).AtMostOnce();

不幸的是,它继续使用第一个代码示例,并且从未成功更新。

如果我没有使用 Throws 方法,那么我可以使用 Callback 方法,但是它在 throw 后不可用:(。

如果有办法或者这是最小起订量的限制吗?

最佳答案

呸……有办法!

您可以使用 Queue 返回返回值列表(策略在这里解释得很好: http://haacked.com/archive/2009/09/29/moq-sequences.aspx )。

这是该博客的示例:

如果您希望它起作用(它不起作用):

reader.Setup(r => r.Read()).Returns(true);
reader.Setup(r => r.Read()).Returns(true);
reader.Setup(r => r.Read()).Returns(false);

只需这样做:
Queue listOfOperations = new Queue<bool>(new bool[] { true, true, false });

reader.Setup(r => r.Read())
.Returns(() => listOfOperations.Dequeue());

每次调用 Read() 时,都会使用队列中的一个新值。

享受!

关于.net - 最小起订量 - 有序设置(预期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458760/

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