2013-04-22 3 views
7

У меня есть тест, который проверяет вывод коллекции метода. Этот вариант теста проходит:FluentAssertions ShouldBeEquivalentTo() versus Should(). BeEquivalentTo()

[TestMethod, TestCategory("BVT")] 
    public void TheStatusesAreReturned() 
    { 
     var expectedUnprocessedStatuses = new List<FileUploadStatus> 
      { 
       FileUploadStatus.InProcess, 
       FileUploadStatus.Pending, 
      }; 

     Sut.GetUnprocessedStatuses() 
      .Should() 
      .BeEquivalentTo(expectedUnprocessedStatuses); 
    } 

Этот вариант тест не удается, с ошибкой "Ожидаемый элементом [0], чтобы быть InProcess, но нашел Pending":

[TestMethod, TestCategory("BVT")] 
    public void TheStatusesAreReturned2() 
    { 
     var expectedUnprocessedStatuses = new List<FileUploadStatus> 
      { 
       FileUploadStatus.InProcess, 
       FileUploadStatus.Pending, 
      }; 

     Sut.GetUnprocessedStatuses() 
      .ShouldBeEquivalentTo(expectedUnprocessedStatuses); 
    } 

Очевидно, что ShouldBeEquivalentTo заботы о доставке заказа, тогда как BeEquivalentTo нет. Почему понятие эквивалентности отличается от двух методов?

ответ

10

Вы правы. Должен() BeEquivalentTo() использует отдельные элементы Equals() для проверки эквивалентности и существует с версии 1. Новейший ShouldBeEquivalentTo(), введенный в FA 2.0, проводит глубокое структурное сравнение, а также сообщает о любых различиях , Для 2.1 я собираюсь изменить поведение, чтобы походить на эквивалентность коллекции по умолчанию

+1

Хорошо, я с нетерпением жду обновления. Я использую Should(). BeEquivalentTo() довольно много! –

+1

Это старый пост, но 'ShouldBeEquivalentTo' будет игнорировать порядок элементов в коллекции начиная с версии 2.1. –

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