Как написать модульные тесты для проверки логики в схеме?Javascript

Форум по Javascript
Ответить
Anonymous
 Как написать модульные тесты для проверки логики в схеме?

Сообщение Anonymous »

У меня есть несколько нетривиальных правил проверки для приложения 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»