gpt4 book ai didi

c# - 使用 NSubstitute 检查接听电话的数量是否在范围内

转载 作者:行者123 更新时间:2023-12-05 00:58:51 24 4
gpt4 key购买 nike

有没有办法通过 NSubstitute 检查接听电话的数量是否在一定范围内?

我想做这样的事情:

myMock.Received(r => r > 1 && r <= 5).MyMethod();

或者,如果我能得到准确的接听电话数量,也可以完成这项工作。我正在单元测试重试和超时,并且根据系统负载和其他运行的测试,重试次数在单元测试执行期间可能会有所不同。

最佳答案

NSubstitute API 目前并不完全支持这一点(但这是个好主意!)。

使用 unofficial 有一种 hacky-ish 方式。 .ReceivedCalls 扩展名:

var calls = myMock.ReceivedCalls()
.Count(x => x.GetMethodInfo().Name == nameof(myMock.MyMethod));
Assert.InRange(calls, 1, 5);

使用 NSubstitute.ReceivedExtensions 命名空间中的自定义 Quantity 的更好方法:

// DISCLAIMER: draft code only. Review and test before using.
public class RangeQuantity : Quantity {
private readonly int min;
private readonly int maxInclusive;
public RangeQuantity(int min, int maxInclusive) {
// TODO: validate args, min < maxInclusive.
this.min = min;
this.maxInclusive = maxInclusive;
}
public override string Describe(string singularNoun, string pluralNoun) =>
$"between {min} and {maxInclusive} (inclusive) {((maxInclusive == 1) ? singularNoun : pluralNoun)}";

public override bool Matches<T>(IEnumerable<T> items) {
var count = items.Count();
return count >= min && count <= maxInclusive;
}

public override bool RequiresMoreThan<T>(IEnumerable<T> items) => items.Count() < min;
}

然后:

myMock.Received(new RangeQuantity(3,5)).MyMethod();

(请注意,您需要 为此使用 NSubstitute.ReceivedExtensions;。)

关于c# - 使用 NSubstitute 检查接听电话的数量是否在范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56013065/

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