我最近发现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
进行比较。这将断言两个集合以相同的顺序包含相同的元素。