#asp.net-core #xunit
#asp.net-ядро #xunit
Вопрос:
Я думал, что нашел более чистый способ с меньшим объемом памяти для проверки a string
, чтобы убедиться, что он действителен JSON
; однако, когда я запускаю тест, он завершается неудачей, потому что он возвращает JsonReaderException
so, когда я попытался изменить тип на this, я получаю ошибку защиты, поскольку она кажется внутренней??
Я использую System.Text.Json
в своем проекте.
Как это можно изменить, чтобы я мог использовать свой существующий код:
public ApplicationSettings WithTemplate(string template) {
try {
JsonDocument.Parse(template);
baseTemplate = template;
}
catch(JsonException ex) {
throw ex;
}
return this;
}
Тестовый код:
[Fact]
public void WithTemplate_ThrowsJsonExceptionWhenBaseTemplateIsInvalid() {
Assert.Throws<JsonException>(() => new ApplicationSettings()
.WithTemplate("345[]{}q345"));
}
Ответ №1:
Я нашел решение, которое было таким же компактным, как JsonDocument.Parse()
и для простой проверки правильности строки json
с JsonSerializer
помощью .
string malformedJson = "345[]{}q345"
JsonSerializer.Deserialize<object>(malformedJson)
Затем я смог протестировать исключение JsonException
и не беспокоиться о JsonReaderException