Похоже, что CollectionAssert
нельзя использовать с дженериками. Это супер разочаровывает; код, который я хочу проверить, использует дженерики. Что мне делать? Напишите шаблон для преобразования между ними? Вручную проверить эквивалентность коллекции?
Это не удается:
ICollection<IDictionary<string, string>> expected = // ...
IEnumerable<IDictionary<string, string>> actual = // ...
// error 1 and 2 here
CollectionAssert.AreEqual(expected.GetEnumerator().ToList(), actual.ToList());
// error 3 here
Assert.IsTrue(expected.GetEnumerator().SequenceEquals(actual));
Ошибки компилятора:
Ошибка 1:
'System.Collections.Generic.IEnumerator > ' не содержит определения для "ToList" и не используется метод расширения "ToList", принимающий первый аргумент типа "System.Collections.Generic.IEnumerator > ", который можно найти
Ошибка 2
'System.Collections.Generic.IEnumerator > ' не содержит определения для "ToList" и не используется метод расширения "ToList", принимающий первый аргумент типа "System.Collections.Generic.IEnumerator > ", который можно найти
Ошибка 3
'System.Collections.Generic.IEnumerator > ' не содержит определения для 'SequenceEquals' и не может быть найден метод расширения 'SequenceEquals', принимающий первый аргумент типа 'System.Collections.Generic.IEnumerator > '
Что я делаю неправильно? Я не правильно использую расширения?
Обновление: Хорошо, это выглядит немного лучше, но все равно не работает:
IEnumerable<IDictionary<string, string>> expected = // ...
IEnumerable<IDictionary<string, string>> actual = // ...
CollectionAssert.AreEquivalent(expected.ToList(), actual.ToList()); // fails
CollectionAssert.IsSubsetOf(expected.ToList(), actual.ToList()); // fails
Я не хочу сравнивать списки; Я только забочусь о равенстве членства. Порядок членов неважен. Как я могу обойти это?