Да: проверка с ошибками теста - PullRequest
0 голосов
/ 10 ноября 2019

Я использую yup для проверки моей формы реакции.

Моя проблема:

У меня есть схема ниже для проверки поля ввода.

object().shape({
    firstname: string()
        .required('First Name is required')
        .test('length', 'First Name must have more than 1 character', (value) => {
            console.log(value && value.length < 2 ? true : false);
            return value && value.length < 2 ? true : false;
        })
        .test('alphabets', 'Name must only contain alphabets', (value) => {
            console.log(!/^[A-Za-z]+$/.test(value));
            return !/^[A-Za-z]+$/.test(value);
        })
});

При вводе одного символа отображается сообщение об ошибке Name must only contain alphabets, а при попытке ввода большего числа символов отображается сообщение об ошибке First Name must have more than 1 character.

Что делать не так?

Кто-нибудь, пожалуйстапомочь мне с этим?

1 Ответ

0 голосов
/ 11 ноября 2019

Вы, кажется, делаете обе проверки неверно, вы хотите вернуть true, если проверка прошла успешно, и false, если проверка не пройдена.

При первой проверке value && value.length < 2 ? true : false вы ищетеvalue.length > 2 вместо <, а также нет необходимости иметь троичный, так как оператор сравнения вернет значение true / false после оценки.

Во второй проверке !/^[A-Za-z]+$/.test(value); вы отрицаете проверку, используя !

Вот исправленный код проверки:

object().shape({
    firstname: string()
        .required('First Name is required')
        .test('length', 'First Name must have more than 1 character', (value) => {
            return value && value.length > 2;
        })
        .test('alphabets', 'Name must only contain alphabets', (value) => {
            return /^[A-Za-z]+$/.test(value);
        })
});
...