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

标签 c# unit-testing fluent-assertions

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

关于c# - 如何使用 FluentAssertions 断言集合按 2 个属性排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37817344/

相关文章:

c# - CaSTLe Windsor 按约定注册组件

c# - C#反序列化在InvalidOperationException上捕获并继续。怎么样?

c - 使用指针对函数(下图)进行单元测试

c# - 流畅的断言 : Be() vs Equals()

c# - 将新项目添加到 SQLite 数据库时更新 ListView

c# - 同步函数内的异步调用

java - namedParameterJdbcTemplate 中的单元测试 GeneratedKeyHolder

unit-testing - 测试驱动开发成本节约

c# - 使用 Fluent Assertions 库的多个断言

c# - 设置 ExclusionNestedObjects 时,FluentAssertions 导致 ObjectDisposeException