FluentAssertions: должен содержать каждый элемент последовательности.

У меня есть список, каждый отдельный элемент также должен отображаться в другом списке, но не обязательно в том же порядке.

Вероятно, я мог бы сделать утверждение с помощью foreach, например

Assert.IsTrue(list1.Count == list2.Count);
foreach(var element in list1)
{
    Assert.IsTrue(list2.Count(e => e.Equals(element)) == 1);
}

Я ищу способ сделать это с помощью fluentAssertions. Элементы не обязательно равны, но эквивалентны. Вероятно, это было бы что-то вроде

list1.ShouldAll().BeEquivalentInAnyOrderTo(list2);

Но я не могу найти ничего, что решило бы мою проблему так просто.

Как проще всего проверить, содержат ли оба списка эквивалентные элементы в любом порядке, используя FluentAssertions?


person Kaito Kid    schedule 08.08.2017    source источник
comment
list1.ShouldBeEquivalentTo(expectedList) - будет проверять эту эквивалентность без строгого порядка. Для большей расширяемости вы можете поиграть со вторым параметром   -  person Fabio    schedule 08.08.2017
comment
Попробуйте использовать list1.ShouldAllBeEquivalentTo(list2);   -  person Nkosi    schedule 08.08.2017


Ответы (1)


Ты не за горами:

list1.Should().BeEquivalentTo(list2);

должно сработать. Источник: https://fluentassertions.com/collections/

person user1777136    schedule 08.08.2017
comment
Это сработало! Я не уверен, почему у меня сложилось впечатление, что это будет учитывать заказ. Мне придется изменить другие модульные тесты, которые использовали эту строку, когда сохранение порядка было действительно важно... - person Kaito Kid; 08.08.2017