如何断言异步任务需在指定最短与最长时间范围内完成?
断言任务执行时长在指定区间内
你可以用两种方式实现这个需求:
方式一:链式结合两个异步断言
直接把NotCompleteWithinAsync和CompleteWithinAsync链式调用就行,注意顺序——先断言任务不会在最短时长内完成,再断言不会超过最长时长完成:
await obj.Awaiting(o => o.DoSomethingAsync()) .Should().NotCompleteWithinAsync(1.Second()) .And.CompleteWithinAsync(2.Seconds());
要是任务用时不足1秒,第一个断言会失败;超过2秒的话,第二个断言失败,刚好符合你的要求。
方式二:捕获执行时长后单独断言
如果需要更灵活的验证逻辑,也可以先记录任务的实际执行时间,再对时长做区间断言:
var stopwatch = Stopwatch.StartNew(); await obj.DoSomethingAsync(); stopwatch.Stop(); stopwatch.Elapsed.Should().BeBetween(1.Second(), 2.Seconds());
这种方式更直观,也方便后续扩展更复杂的时长校验规则。
内容的提问来源于stack exchange,提问作者tg73
相关产品推荐
相关产品推荐

