KellermanSoftware CompareNetObjects, сравнивая коллекции разных типов - PullRequest
0 голосов
/ 04 декабря 2018

Я использую CompareNetObjects для автоматического тестирования моей системы.Это было полезно для обеспечения того, чтобы оптимизация производительности не изменила ожидаемое поведение системы, а также не допускала ошибок.

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

Класс:

public class MustBeCorrect
{
     public string Name { get; set; }
     IEnumerable<string> Items { get; set; }
}

Тест:

[Fact] void IsCorrect()
{
    var obj1 = new MustBeCorrect
    {
        Name = "Kitty",
        Items = new string[]
        {
           "Collar",
           "Bell"
        }
    };
    var obj2 = new MustBeCorrect
    {
        Name = "Kitty",
        Items = new List<string>
        {
           "Collar",
           "Bell"
        }
    };
    comparer.Compare(obj1, obj2); // False!
}

Два вышеупомянутых объекта сравниваются как не равные, дажехотя единственное различие между этими двумя объектами состоит в том, что один использует массив, а другой - список.Однако, с точки зрения моего контракта, эти двое кажутся мне одинаковыми.

Как настроить параметры сравнения только для сравнения содержимого коллекций, а не самой коллекции?

1 Ответ

0 голосов
/ 04 декабря 2018

Не существует способа сделать то, что вы хотите специально для коллекций.

Однако есть опция, которую вы можете установить, под названием IgnoreObjectTypes в ComparisonConfig.По умолчанию это false, но если вы установите его на true, оно должно дать вам желаемое поведение для ваших коллекций.

Имейте в виду, что при всех сравнениях будут игнорироваться типы объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...