FluentAssertions似乎因NullReferece异常而失败
[Test]
public void DeepWithNulls()
{
var l1 = new List<string> { "aaa", null };
var l2 = new List<string> { "aaa", null };
l1.Should().Equal(l2);
}
比较在没有空值的集合上按预期工作。
答案 0 :(得分:4)
这是因为集合比较逻辑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
所以它会抛出空引用异常