如何使用 FluentAssertions 断言集合按 2 个属性排序?

How can I assert a collection is sorted by 2 properties with FluentAssertions?

我最近发现 FluentAssertions 有一个名为 BeInAscendingOrder 的集合断言。太棒了!

public class MyItems
{
    public int SequenceNumber { get; set; }
    public int Name { get; set; }
}

IList<int> resultingList = myClassUnderTest.GetOrderedList();

resultingList.Should().BeInAscendingOrder(m => m.SequenceNumber);

但现在我想测试一个列表是否按 2 个属性排序。这可能吗?

你真的不能。您传入的 lambda 被翻译成 属性 表达式,而不是可执行的 lambda 语句。并且没有重载来提供您自己的 IComparer 实现。

最好的办法是生成一个集合,其中包含按正确顺序排列的这些项目,并将其与 Should().Equal 进行比较。这将断言两个集合包含相同顺序的相同元素。