如何为嵌套集合编写 FluentAssertion,与顺序无关

本文关键字:顺序 FluentAssertion 嵌套 集合 | 更新日期: 2023-09-27 18:36:07

使用FluentAssertions 3.5.1,我试图断言整数数组列表等同于另一个整数数组列表,而不关心项目顺序。这是行不通的。在试图分解这个问题时,我试图断言当它们确实具有相同的顺序时它们是相等的,但这也不起作用:

var a = new List <Int32[]> { new Int32[] { 1, 2 } };
var b = new List <Int32[]> { new Int32[] { 1, 2 } };
a.Should().BeEquivalentTo(b);

这给了我一个信息:

预期集合 {{1, 2}} 等效于 {{1, 2}},

但它错过了 {{1, 2}}。

也许BeEquivalentTo不是比较嵌套集合的正确断言?

迈克尔

如何为嵌套集合编写 FluentAssertion,与顺序无关

您可以使用下一个代码修复它:

a.ShouldBeEquivalentTo(b);

a.ShouldAllBeEquivalentTo(b);

它会起作用,因为ShouldBeEquivalentTo深等于比较,而Should().BeEquivalentTo()则不然。