@beefront17

Как написать тест для валидации, react/redux?

Добрый день! Объясните пожалуйста как написать тест для метода validate reduxForm?
Пока не понимаю что за чем должно быть...
для тестов использую jest/enzyme
Сама валидация
export const validate = (values, props) => {
  const errors = {};

  if (!values.value) {
    errors.value = 'Please enter value';
  }

  if (values.value && (values.value === props.initialValues.value)) {
    errors.value = 'Please enter a new value';
  }

  return errors;
};


Буду очень благодарен!
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
maxfarseer
@maxfarseer
реакт.рф, обучаю реакту и компании
Подкину теории: вы хотите протестировать функцию. Ваша функция чистая ( то есть выдает один и тот же результат для одних и тех же входных параметров, иначе _аргументов_ функции). Следовательно тестировать такую функцию просто.
А) вы импортируете функцию в своем файле с тестами
Б1) вызываете ее без values.value - ожидаете, что errors.value = 'Please enter value'
Б2) вызываете ее с values.value === props.initialValues.value и ождаете, что будет errors.value = 'Please enter a new value'

то есть, вы сами описываете в первом it вашего теста объект values, во втором it описываете values и props. Ваш тест можно описать так: "вы предполагаете, что если дадите 20 рублей продавцу, он выдаст вам батон". Тут так же: вы предполагаете, что если функция validate получит такие-то аргументы (только что вами в этом тесте созданные) - получится такой-то ответ от нее.

const validate = require('./validate');
const values = {} // то есть values.value - не существует
const props = {} // для первого теста на существование значения, нам не важно какие тут значения props
test('покажет ошибку, если нет значения', () => {
  expect(validate(values, props)).toBe('Please enter value');
});


Второй тест вам на домашнее задание.

p.s. я писал в ответе it, потому что привык, что тесты пишутся внутри it, но сейчас в доке jest вижу, что они используют test ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы