FluentAssertions: ShouldBeEquivalentTo vs Should().Be() vs S

本文关键字:vs Be Should ShouldBeEquivalentTo FluentAssertions | 更新日期: 2023-09-27 18:23:43

有人能总结它们之间的差异和使用范围吗?

我读过SO文章,

  • ShouldBeEquivalientTo():ShouldBeequvalentTo()用于比较复杂的对象图,而不是.NET框架的基元类型部分
  • Should().BequivalentTo():用于验证等价性的单个项Equals()实现,自版本1以来一直存在。FA 2.0中引入的新ShouldBeEquivalentTo()正在进行深入的结构比较,并报告任何差异
  • Should().Be():找不到

根据我的理解,如果Should().BeEquivalentTo()进行深入比较,ShouldBeEquivalientTo()Should().BeEquivalentTo()的工作原理相似。

FluentAssertions: ShouldBeEquivalentTo vs Should().Be() vs S

我同意这是令人困惑的。Should().BeEquivalentTo()实际上应该被称为Should().EqualInAnyOrder()或类似的东西。正如您所说,它使用所涉及对象的Equals实现来查看expected集合中的所有对象是否都出现在actual集合中,而不管顺序如何。我需要为下一个主要版本修复它。