Задать вопрос
@magary4

Как протестировать компоненет react?

есть следующий компонент

const RecipeOverview = () => {
  const { recipes } = useContext(Context);

  return (
    <div className="recipe-overview">
      {recipes.map(recipe => <RecipeItem recipe={recipe} key={recipe.id} />)}
    </div>
  );
};


какие тесты можно для него написать?
Приходит в голову только мокнуть RecipeItem ну и посмотреть что отрендерилось столько моков сколько пришло в recipes
что еще можно?
  • Вопрос задан
  • 38 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Merion Academy
    Frontend-разработка на React
    4 месяца
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
Пригласить эксперта
Ответы на вопрос 2
@Dasslier
FrontEnd Developer
Т.к. тут компонент без какой-либо логики вообще, я бы сделал только снэпшот. Либо вообще не делал бы для него тестов
Ответ написан
Комментировать
Robur
@Robur
Знаю больше чем это необходимо
Чтобы что-то протестировать, надо решить что вы будете тестировать.
Чтобы решить что вы будете тестировать, надо найти что может внезапно поломаться.

Что вы хотите протестировать в этом компоненте такого, что
1. относится к логике этого компонента
2. может незаметно сломаться
3. настолько важно чтобы окупить затраты по написанию-сопровождению теста?

присваивание переменной? это ломаться не должно.
Работу .map (тот пример что вы описали)? это внешняя логика, да и вообще - встроенный функционал.
То что в Recipe вы передаете recipe? это не может сломаться, пока вы сознательно не удалите. В этот момент тест тоже станет не валидным, и он вам ничем не поможет, его надо будет менять.

В общем - не надо его тестировать. Разве что для тренировки, попробовать как оно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
от 250 000 до 300 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽