FluentAssertions:ShouldBeEquivalentTo vs Should()。Be()vs Should()。BeEquivalentTo()?

时间:2014-09-19 02:43:39

标签: c# comparison fluent-assertions

任何人都可以总结它们之间的差异和使用范围吗?

我读过SO文章,

  • ShouldBeEquivalientTo():ShouldBeEquivalentTo()旨在用于比较复杂的对象图,而不是.NET框架的基本类型部分。
  • Should().BeEquivalentTo():单个项目Equals()实现验证等效性,自版本1开始实施.FIN 2.0中引入的较新的ShouldBeEquivalenTo()正在进行深入的结构比较,并报告任何差异。
  • 应该()。Be():找不到。

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

1 个答案:

答案 0 :(得分:26)

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