C# FluentAssertions:ShouldBeEquivalentTo vs Should().Be()vs Should().BeEquivalentTo()?
有人能总结一下它们之间的差异和使用范围吗 我读了很多文章C# FluentAssertions:ShouldBeEquivalentTo vs Should().Be()vs Should().BeEquivalentTo()?,c#,comparison,fluent-assertions,C#,Comparison,Fluent Assertions,有人能总结一下它们之间的差异和使用范围吗 我读了很多文章 :ShouldBeEquivalentTo()用于比较复杂的对象图,而不是.NET framework的基本类型部分 :individual items Equals()实现,以验证等效性,自版本1以来一直存在。FA 2.0中引入的较新的shouldbeeeequivalento()正在进行深入的结构比较,并报告任何差异 Should().Be():找不到 以我拙见的理解,应该与和应该是等效的。如果应该(),BeEquivalentT
- :ShouldBeEquivalentTo()用于比较复杂的对象图,而不是.NET framework的基本类型部分李>
- :individual items Equals()实现,以验证等效性,自版本1以来一直存在。FA 2.0中引入的较新的shouldbeeeequivalento()正在进行深入的结构比较,并报告任何差异
- Should().Be():找不到
以我拙见的理解,
应该与和应该是等效的。如果应该(),BeEquivalentTo()
的工作原理类似。BeEquivalentTo()
做了深入的比较。我同意这是令人困惑的Should().BeEquivalentTo()
实际上应该被调用Should().equalanyOrder()
或类似的东西。正如您所说,它使用相关对象的Equals
实现来查看预期的集合中的所有对象是否都出现在实际的集合中,而不考虑顺序。我需要在下一个主要版本中解决这个问题 谢谢。那么Should().Be()
呢?它的工作原理与其中一个类似还是完全等效?只有Should().Equal()
与Should().beequivalento()相同,但需要严格的顺序。这就是为什么我建议将beequivalento
重命名为equalanyorder
。这在5.0中得到了解决。阅读所有关于它的内容,因为字符串比较应该等价于表示不区分大小写的匹配