Fluent断言:如何检查带有大小写的键值对

时间:2016-07-07 17:55:02

标签: c# fluent-assertions

我有一个Dictionary<string, object>类型的字典,我试图用Fluent Assertions断言。我需要检查它是否包含一个名为&#34; iss&#34;和价值&#34; ABC&#34;。我需要断言&#34;值&#34;现场不考虑案件。是否支持?

3 个答案:

答案 0 :(得分:2)

dictionary.Should().ContainKey("iss").WhichValue.Should().BeEquivalentTo("abc");

答案 1 :(得分:0)

你应该创建一个自定义断言..沿着这些行的东西

 public static class GenericDictionaryAssertions
{
    public static void FirstKeyMatchesAndValueInvariantMatch<TKey, TValue>(this GenericDictionaryAssertions<TKey, TValue> assertions, TKey key, string value) where TKey : class
    {
        var someCondition = assertions.Subject.Any(a => a.Key == key && string.Equals(a.Value as string, value, StringComparison.InvariantCultureIgnoreCase));
        Execute.Assertion
           .ForCondition(someCondition)
           .BecauseOf("")
           .FailWith("Expected list to contain key " + key);
    }
}

用法:

[TestFixture]
public class Tests
{
    [Test]
    public void Normal()
    {
        var actual = new Dictionary<string, object> {{"iss", "abc"}};
        actual.Should().FirstKeyMatchesAndValueInvariantMatch("iss", "ABC");
    }
}

由于ToString()而有点不优雅..但是应该让你开始

答案 2 :(得分:0)

因此,在学习了各种查找 KeyValuePair 的方法后(只是发现数据集本身是问题),我发现这是处理您正在使用 {{ 查找的查找的最简单方法3}}。

dictionary.Should().Contain("iss", "ABC".ToLowerInvariant());