Свободные утверждения ShouldAllBeEquivalentTo

Я не уверен, было ли это в старой версии FluentAssertions, но я хотел бы сравнить коллекцию с другой коллекцией. У меня есть dto:

public class UserDTO
{
    public int Id { get; set; }
    public string Username { get; set; }
}

У меня есть два списка, которые я хотел бы сравнить.

 List<UserDTO> createdUsers = this.GetCreatedUser();
 var expectedResults = this.dbContext.Users.Top(10);

Самое близкое, что я вижу, должно быть эквивалентно:

 createdUsers.Should().AllBeEquivalentTo(expectedResults)

но когда я пытаюсь передать свои исключения, кажется, что он работает, предоставляя мне исключения для списка вместо самого объекта.

Я хотел бы сравнить два списка из них, исключая свойство Id. Я мог бы поклясться, что была функция под названием ShouldAllBeEquivalentTo, которая принимала параметры, позволяющие исключать,

createdUsers.ShouldAllBeEquivalentTo(expectedResults, o => o.Excluding(x => x.Id);

Как я могу сравнивать коллекции, исключая свойства из сравнения?


person johnny 5    schedule 22.06.2018    source источник


Ответы (1)


Документация предлагает следующее, когда речь идет об исключениях из коллекций и словарей.

createdUsers.Should().BeEquivalentTo(expectedResults, options => options.Excluding(_ => _.Id));

Цитата из документации:

чтобы утверждать, что все экземпляры OrderDto структурно равны одному объекту:

orderDtos.Should().AllBeEquivalentTo(singleOrder);

Ссылка Сравнение графов объектов: коллекции и словари

person Nkosi    schedule 22.06.2018
comment
Интересно, я работал над такой старой версией с моей последней компанией, должно быть, все немного изменилось, спасибо! - person johnny 5; 22.06.2018
comment
Это верно. BeAllEquivalentTo будет сравнивать каждый объект в коллекции с одним и тем же объектом. - person Dennis Doomen; 22.06.2018
comment
@johnny5 Да, в последней основной версии FA ShouldBeEquivalentTo() был перемещен в Should().BeEquivalentTo(), как указано в блоге Денниса: continuousimprover.com/2018/02/ - person Michal Ciechan; 22.06.2018