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