断言 NameValueCollection 是否等效

本文关键字:是否 NameValueCollection 断言 | 更新日期: 2023-09-27 18:36:47

>有谁知道断言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]);
   }
}

断言 NameValueCollection 是否等效

>如何将其转换为字典并断言为:

CollectionAssert.AreEquivalent(
    expectedCollection.AllKeys.ToDictionary(k => k, k => expectedCollection[k]),
    collection.AllKeys.ToDictionary(k => k, k => collection[k])); 

我是 NUnit Fluent Assertions的粉丝。 语法不仅流畅,更简洁,而且它们使许多断言更容易,这是其中之一。

考虑:

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