2014-09-19 2 views
12

Может ли кто-нибудь суммировать различия и область использования между ними?FluentAssertions: ShouldBeEquivalentTo vs Should(). Be() vs Should(). BeEquivalentTo()?

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

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

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

+0

Для сравнения строк ShouldBeEquivalentTo означает нечувствительность к регистру –

ответ

14

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

+0

Спасибо. и как насчет 'Should(). Be()'? работает ли она аналогично или полностью эквивалентна одному из них? – Youngjae

+1

Существует только 'Should(). Equal()', который делает то же самое, что и 'Should(). BeEquivalentTo()', но требует строгой упорядочивания. Вот почему я предлагал переименовать 'BeEquivalentTo' в' EqualInAnyOrder'. –

+1

Запланировано для v5.0 https://github.com/fluentassertions/fluentassertions/issues/463 –

 Смежные вопросы

  • Нет связанных вопросов^_^