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
коллекции независимо от порядка. Мне нужно исправить это для следующей крупной версии.