FluentAssertions Should.Equal sur les collections, contenant des valeurs NULL
-
13-11-2019 - |
Question
FluentAssertions semble échouer avec l'exception NullReferece lorsque j'essaie de comparer deux collections avec des valeurs nulles
[Test]
public void DeepWithNulls()
{
var l1 = new List<string> { "aaa", null };
var l2 = new List<string> { "aaa", null };
l1.Should().Equal(l2);
}
La comparaison fonctionne comme prévu sur les collections sans valeurs nulles.
La solution
Cela est dû au fait qu'au fond de la logique de comparaison de collection, Fluent Assertion utilise le code suivant
for (int index = 0; index < expectedItems.Length; index++)
{
verification.ForCondition((index < actualItems.Length) && actualItems[index].Equals(expectedItems[index]))
.FailWith("Expected " + Verification.SubjectNameOr("collection") +
" to be equal to {0}{reason}, but {1} differs at index {2}.", expected, Subject, index);
}
dans le code ci-dessus expectedItems
et actualItems
sont vos listes
Pensez maintenant à ce qui se passera lors de la deuxième itération lorsque (la partie ci-dessous) sera exécutée ?
actualItems[index].Equals(expectedItems[index])
comme actualItems[1]
est null
donc il lève une exception de référence nulle
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow