FluentAssertions Should.Equal on collections,包含null

时间:2012-01-24 15:42:48

标签: c# fluent-assertions

当我尝试将两个集合与空值进行比较时,

FluentAssertions似乎因NullReferece异常而失败

    [Test]
    public void DeepWithNulls()
    {
        var l1 = new List<string> { "aaa", null };
        var l2 = new List<string> { "aaa", null };

        l1.Should().Equal(l2);
    }

比较在没有空值的集合上按预期工作。

1 个答案:

答案 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);
            }

以上代码expectedItemsactualItems是您的列表

现在想想在第二次迭代中会发生什么(下面的部分)?

actualItems[index].Equals(expectedItems[index])

因为actualItems[1]null所以它会抛出空引用异常