5

2 つのコレクションを null で比較しようとすると、FluentAssertions が NullReferece 例外で失敗するようです

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

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

null のないコレクションでは、比較は期待どおりに機能します。

4

1 に答える 1

4

これは、コレクション比較ロジックの奥深くでFluentAssertionが次のコードを使用しているために発生しています。

 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あなたのリストです

次に、(以下の部分)が実行される2回目の反復中に何が起こるかを考えてみてください。

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

actualItems[1]そのままの場合、null参照例外がnullスローされます

于 2012-01-24T16:04:03.117 に答える