3

NameValueCollection が同等かどうかをアサートする良い方法を知っている人はいますか? 現時点では NUnit を使用していますが、 CollectionAssert.AreEquivalent() はキーをアサートするだけのようです。キーと値ではありません。

私はこの小さなコードを書いて私を助けましたが、同じことをすぐに実行できる何かがあればいいと思います.

private static void AssertNameValueCollectionAreEquivalent(NameValueCollection expectedCollection, NameValueCollection collection)
{
   // Will evaluate keys only
   CollectionAssert.AreEquivalent(expectedCollection, collection);

   foreach (string namevalue in collection)
   {
      Assert.AreEqual(expectedCollection[namevalue], collection[namevalue]);
   }
}
4

2 に答える 2

2

それを Dictionary に変換して、次のようにアサートするのはどうですか:

CollectionAssert.AreEquivalent(
    expectedCollection.AllKeys.ToDictionary(k => k, k => expectedCollection[k]),
    collection.AllKeys.ToDictionary(k => k, k => collection[k])); 
于 2012-06-12T06:29:57.597 に答える
2

私はFluent AssertionsNUnit のファンです。構文が流暢で簡潔になるだけでなく、多くのアサーションが簡単になります。これはその 1 つです。

検討:

var c = new NameValueCollection();
var c2 = new NameValueCollection();

c.Add("test1", "testvalue1");
c.Add("test2", "testvalue2");

c2.Add("test1", "testvalue1");
c2.Add("test2", "testvalue2");

c.Should().BeEquivalentTo(c2); // assertion succeeds
于 2012-06-12T06:10:43.667 に答える