gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:04:38 25 4
gpt4 key购买 nike

我正在我的 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"});

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

Fluent assertions 我知道有 BeInAscendingOrderBeInDescendingOrder方法,但是即使在查看文档和 following possibly related questions 之后我看不到链接排序方法的示例。

我目前的测试验证是这样的:
results.Should().HaveCount(4).And.BeInAscendingOrder(x => x.Ref)
.And.BeInAscendingOrder(x => x.Name);

我期待验证有点像 LINQ它在哪里 OrderBy(x => x.Ref).ThenBy(x => x.Name) .

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

有没有一种方法可以告诉 Fluent Assertions,这些排序应该相互结合使用,而不仅仅是按顺序应用?

最佳答案

所以我尝试了 Fabio/Stuart 关于使用 WithStrictOrdering 的评论。这工作了一段时间。

但是,当我开始更改排序顺序时,我的测试一直通过而不是失败(因为我更改了测试的排序而不是方法)。

以下工作非常出色:

var resultsList = results.ToList();
var expectedResults = resultsList.OrderByDescending(x => x.IsSupplierInvalid)
.ThenBy(x => x.Ref).ToList();
resultsList.Should().HaveCount(4).And.ContainInOrder(expectedResults);

关于c# - 如何验证多个排序已应用于集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51140245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com