JsonDocument анализирует JsonReaderException — xUnit

#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