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

Может ли кто-нибудь обобщать различия и область использования между ними?

Я читаю статьи SO,

  • ShouldBeEquivalientTo(): ShouldBeEquivalentTo() предназначен для сравнения сложных графов объектов, а не с примитивными типами части.NET framework.
  • Должен(). BeEquivalentTo(): отдельные элементы. Equals() для проверки эквивалентности и существует с момента версии 1. Новее ShouldBeEquivalenTo(), введенное в FA 2.0, проводит глубокое структурное сравнение, а также сообщает о любых различиях.
  • Should(). Be(): не может найти.

В моем скромном понимании, ShouldBeEquivalientTo() и Should().BeEquivalentTo() работают одинаково, если If Should().BeEquivalentTo() делает углубленное сравнение.

Ответ 1

Я согласен, что это сбивает с толку. Should().BeEquivalentTo() самом деле должен называться Should().EqualInAnyOrder() или что-то в этом роде. Как вы сказали, он использует реализацию Equals вовлеченных объектов, чтобы увидеть, отображаются ли все из expected коллекции в actual коллекции независимо от порядка. Мне нужно исправить это для следующей крупной версии.