Il semble que l' CollectionAssert
ne peut pas être utilisé avec les médicaments génériques. C'est super frustrant, le code que je veux tester ne utiliser des génériques. Que dois-je faire? Écrire réutilisable pour convertir entre les deux? Manuellement, vérifiez les collection d'équivalence?
Cette échoue:
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));
Les erreurs de compilation:
Erreur 1:
'Système.Les Collections.Génériques.IEnumerator>' ne contient pas une définition pour 'ToList' et aucune méthode d'extension 'ToList' acceptant un premier argument de type 'System.Les Collections.Génériques.IEnumerator>' a pu être trouvé
Erreur 2
'Système.Les Collections.Génériques.IEnumerator>' ne contient pas une définition pour 'ToList' et aucune méthode d'extension 'ToList' acceptant un premier argument de type 'System.Les Collections.Génériques.IEnumerator>' a pu être trouvé
Erreur 3
'Système.Les Collections.Génériques.IEnumerator>' ne contient pas une définition pour 'SequenceEquals' et aucune méthode d'extension 'SequenceEquals' acceptant un premier argument de type 'System.Les Collections.Génériques.IEnumerator>' a pu être trouvé
Ce que je fais mal? Je ne suis pas à l'utilisation des extensions correctement?
Mise à jour: Ok, cela ressemble un peu mieux, mais ne fonctionne toujours pas:
IEnumerable<IDictionary<string, string>> expected = // ...
IEnumerable<IDictionary<string, string>> actual = // ...
CollectionAssert.AreEquivalent(expected.ToList(), actual.ToList()); // fails
CollectionAssert.IsSubsetOf(expected.ToList(), actual.ToList()); // fails
Je ne veux pas être la comparaison des listes; je ne se soucient définir l'appartenance de l'égalité. L'ordre des membres est sans importance. Comment puis-je contourner ce problème?