Étant donné deux dictionnairesNUnit: L'API pour vérifier si deux dictionnaires sont les mêmes
var dictA = new Dictionary<string, classA>();
var dictB = new Dictionary<string, classA>();
Comment vérifier si ces deux dictionnaires sont les mêmes? La capture ici est que je ne peux pas utiliser le classA.Equals
par défaut pour comparer les paires de valeurs. Au lieu de cela, le test passera quand et seulement si donné que tous les objets du type classA
dans les dictionnaires doivent satisfaire mon propre code personnalisé IEqualityComparer<ClassA>
.
Plus précisément, je regarde quelque chose comme
CollectionAssert.AreEquivalent(dictA, dictB, new ClassEqualityComparer());
avec ClassEqualityComparer
hérite de IEqualityComparer<ClassA>
, ou équivalent. Je ne me dérange pas si je dois un type sous-classe NUnit de IEqualityComparer
(comme IResolveConstraint
), mais la chose la plus importante est que la méthode Assert
doit être quelque chose comme
Assertion(dictA, dictB, EqualityComparer)
Ou quelque chose encore plus simple; Je ne veux pas utiliser Assert.That
puis implémenter un type de IResolveConstraint
qui s'exécute dans des pages juste pour vérifier si deux dictionnaires sont identiques.
Une idée?
Que le comparateur compare seulement la clé du dictionnaire, il ne compare pas entre les valeurs. – Graviton
Si vous souhaitez comparer des valeurs, une liste serait un type de données plus approprié qu'une table de hachage. –
Je ne peux pas parce qu'une comparaison de liste signifierait que je dois obtenir l'ordre de l'article juste. Dans ma comparaison, les commandes ne sont pas importantes. – Graviton