相关疑难解决方法(0)

FluentAssertions:排序列表的等效性

我正在尝试使用C#中的FluentAssertions建立两个列表的等价,其中有两件事是重要的:

  1. 元素通过它们持有的值进行比较,而不是通过引用进行比较(即它们是等价的,不相等)
  2. 列表中元素的顺序很重要

FluentAssertions(甚至是NUnit)中没有这样做的功能吗?

干杯!

c# nunit unit-testing fluent-assertions

22
推荐指数
3
解决办法
1万
查看次数

如何验证多个排序已应用于集合?

我正在我的 Kendo 网格上实现可排序的列,用户预期的行为是允许同时对多个列进行排序。

自然地,我首先编写一个单元测试,以便能够验证排序是(默认情况下)首先是Ref升序,然后是Name升序。

有问题的测试供应商在这里:

_context.Suppliers.Add(new Supplier { Ref = "abc", Name = "steve"});
_context.Suppliers.Add(new Supplier { Ref = "abc", Name = "bob"});    
_context.Suppliers.Add(new Supplier { Ref = "cde", Name = "ian"});    
_context.Suppliers.Add(new Supplier { Ref = "fgh", Name = "dan"}); 
Run Code Online (Sandbox Code Playgroud)

然后我去要求对我分类的供应商进行测试。

我知道 Fluent 断言有BeInAscendingOrderBeInDescendingOrder方法,但是即使在查看文档并遵循可能相关的问题之后,我也看不到链接排序方法的示例。

我目前的测试验证是这样的:

results.Should().HaveCount(4).And.BeInAscendingOrder(x => x.Ref)
           .And.BeInAscendingOrder(x => x.Name);
Run Code Online (Sandbox Code Playgroud)

我期待验证的工作有点像LINQ它有的地方OrderBy(x => x.Ref).ThenBy(x => x.Name)

但是,在运行测试时,它失败了,因为它期望集合按升序Name排序(最终排序断言)。

有没有办法告诉 Fluent Assertions 排序应该相互结合应用,而不仅仅是按顺序应用?

c# sorting tdd unit-testing fluent-assertions

7
推荐指数
1
解决办法
889
查看次数

标签 统计

c# ×2

fluent-assertions ×2

unit-testing ×2

nunit ×1

sorting ×1

tdd ×1