У меня есть несколько нетривиальных правил проверки для приложения Vue, которое использует VeeValidate, Yup и Vitest. Я хотел бы написать модульные тесты для моей схемы Yup, но примеры, которые я видел, включают использование недокументированных API (по крайней мере, с точки зрения официальной документации на GitHub). Каждый раз, когда я пытаюсь найти способ протестировать проверки Yup, он ссылается на метод test() (источник), который, по-видимому, является пользовательской проверкой, а не модульным тестом.
Это не та схема, которую я использую, но она служит простым примером:
Код: Выделить всё
const schema = yup.object().shape({
firstName: string().required().max(10),
age: number().required()
});
Среды проверки, которые я использовал в других технологических стеках, позволяют тестировать результат одного свойства, так что именно с этой точки зрения я и рассматриваю тестирование схем Yup. Я действительно новичок в этом, поэтому я мог бы просто попытаться использовать платформу так, как она никогда не предполагалась.
Мой тестовый код:
Код: Выделить всё
const model = {
firstName: '01234567891' // 11 characters, should be invalid
};
try {
schema.validate(model);
}
catch (error) {
// Now I need to assert that firstName is too long
// and I don't care about the age property in this test
}
У меня возникли проблемы с утверждением; Понятия не имею, кому это написать. В идеале я хотел бы передать минимальную информацию, чтобы вызвать одну интересующую меня ошибку проверки (слишком длинное имя firstName), но я получаю ошибку от свойства, которое меня не волнует в моем тесте. В моем реальном приложении у меня есть схема с более чем 20 свойствами, и было бы очень сложно указать 20 допустимых значений и одно недопустимое значение во всех тестах, которые мне нужно написать.
Я запускаю тесты из командной строки, используя npm run test:unit, который является настройкой по умолчанию для Vitest.
Как написать правильный модуль проверить схемы «Да», так что мне не нужно указывать огромное допустимое значение объект с одним недопустимым свойством и сделать утверждение для одного единственного правила проверки?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... yup-schema