Я использую NJsonSchema для проверки ввода JSON.
У меня есть небольшой класс, который принимает коллекцию объектов ValidationError
и создает более удобные сообщения об ошибках, используя содержимое каждой ошибки проверки.
Я хочу написать модульные тесты для этого класса, однако я столкнулся с проблемой.Один из обработчиков сообщений в моем классе отвечает за обработку NotInEnumeration
ошибок, и для этого он использует свойство Enumeration
в JsonSchema4
объекте, содержащемся в ValidationError, и создает красиво отформатированное сообщение об ошибке.
При написании теста для этого конкретного обработчика я обнаружил, что следующее недопустимо:
JsonSchema4 enumSchema = new JsonSchema4();
enumSchema.Enumeration = new List<object>{ "A", "B", "C" };
Это потому, что свойство Enumeration имеет внутренний установщик.
Мне нужно иметь возможность установить перечисление ошибки проверки, поскольку объект должен передаваться в конструктор ValidationError, который затем читается моим обработчиком, как показано ниже.
private string NotInEnumerationHandler(ValidationError error)
{
var userFriendlyErrorString = "Answer must be within range: ";
var enumString = "[" + string.Join<object>(", ", error.Schema.Enumeration) + "]";
userFriendlyErrorString += enumString;
return userFriendlyErrorString;
}
Я не могу смоделировать объект JsonSchema4, используя moq, так как moq не допускает насмешку не виртуальных методов.
По существу детали не очень важны, но я хотел бы знать, есть лиспособ установки внутреннего сеттера, чтобы я мог протестировать этот конкретный метод в своем классе.