You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用FluentAssertions检查嵌套集合的顺序

正确使用FluentAssertions测试嵌套集合顺序的方法

你的代码问题出在使用了LINQ的Select操作符——它是延迟执行的,只会生成一个查询对象,不会实际遍历MarkSheets集合去执行里面的Should().BeInDescendingOrder断言。这就导致不管你写升序还是降序,断言根本没被触发,自然一直返回true。

下面是两种正确的写法:

方法一:使用ForEach遍历执行断言

直接遍历每个MarkSheet,对其Comments集合做顺序验证:

selectedStudent.MarkSheets.ForEach(markSheet => 
    markSheet.Comments.Should().BeInDescendingOrder(comment => comment.CommentedTime));

方法二:使用FluentAssertions的AllSatisfy方法

利用FluentAssertions提供的集合断言方法,更贴合框架风格:

selectedStudent.MarkSheets.Should().AllSatisfy(markSheet => 
    markSheet.Comments.Should().BeInDescendingOrder(comment => comment.CommentedTime));

这两种写法都会立即遍历所有MarkSheet,并逐一验证其Comments集合是否符合指定的顺序要求,一旦有任何一个集合不满足条件,断言就会抛出错误。

内容的提问来源于stack exchange,提问作者xcxc0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:30:55