У меня есть словарь типа Dictionary<string, object>
, который я пытаюсь утверждать с помощью бесплатных утверждений. Мне нужно проверить, содержит ли он ключ с именем «iss» и значением «ABC». Мне нужно сделать поле «значение» без рассмотрения дела. Поддерживается ли это?Свободные утверждения: Как проверить пару ключевых значений с кодом случая
ответ
Вы должны создать пользовательское утверждение .. Что-то вдоль этих линий
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() .. но если вы начали
Я также оцениваю другие варианты. Я приму ответ, если не найду лучшего решения. – Shetty
Это не работает. assertions.Subject.Any (a => a.Key == key && string.Equals (a.Value as string, value, StringComparison.InvariantCultureIgnoreCase)) возвращает false – Shetty
@Shetty Я просто попробовал еще раз и возвращает true. Я обновляю код, чтобы показать полное тестовое оборудование NUnit. Надеюсь, это поможет –
dictionary.Should().ContainKey("iss").WhichValue.Should().BeEquivalentTo("abc");
.WhichValue.Should(). BeEquivalentTo ("abc") не существует. и .WhichValue.Should(). ShouldBeEquivalentTo ("abc") не работает. Он сравнивается с случаем. – Shetty
это один элемент словаря, который имеет ключ «iss» и значение «abc» или отдельный? –
Да, это возможно и не сложно. Какой у вас код до сих пор? –
это словарь, который имеет один из ключей как «iss» и значение «abc». – Shetty