FluentAssertions对包含null的集合应为.Equal
本文关键字:Equal 集合 包含 null FluentAssertions | 更新日期: 2023-09-27 18:21:20
当我尝试比较两个具有null 的集合时,FluentAssessments似乎失败,出现NullReferece异常
[Test]
public void DeepWithNulls()
{
var l1 = new List<string> { "aaa", null };
var l2 = new List<string> { "aaa", null };
l1.Should().Equal(l2);
}
比较在不包含null的集合上按预期工作。
之所以会发生这种情况,是因为在集合比较逻辑Fluent Assertion的深处使用了以下代码
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);
}
上面的代码expectedItems
和actualItems
是您的列表
现在想想当第二次迭代(下面的部分)执行时会发生什么?
actualItems[index].Equals(expectedItems[index])
因为actualItems[1]
是null
,所以它抛出空引用异常