Задать вопрос
@bpGusar
*spoiler*

Как протестировать функцию в React через Jest?

Функция находится внутри класса, например:
class Bla extends React.Component {
public Foo = (arg) =>{
// тут че нибудь делаем
} 
render(){
...
}
}

Как ее протестировать? Только начал изучать тестирование и уперся в стену, хз как это ваще. То есть ее надо экспортить, а потом в файл теста импортить? Или как? Что вообще делать правильно?
  • Вопрос задан
  • 745 просмотров
Подписаться 3 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
HalfBloodPrince
@HalfBloodPrince
Front-End Developer
Я отвечу в тех рамках, с которыми я знаком, как я тестирую и вижу это. Тестировать смысла нет методы в реакт компоненте. Я думаю подходить к этому, тестировать то как класс будет использоваться. Если этот метод отдельно будет где-то пользоваться, то надо подумать о его тестировании, если нет, то его предназначение как компонента эта функция render.

Для этого есть библиотеки как react-testing-library (про нее и на хабре была статья), а также Enzyme. Суть, что вы рендерите ваш компонент в тесте и смотрите, чтобы он давал правильные результаты. А что он делает внутри, это уже дело компонента.

С помощью coverage jest сможете посмотреть, какие методы были задействованы при условиях вашего теста. Например, если метод вызывается после клика на каком-то элементе внутри компонента, то можно использовать соответствующий триггер в тесте и "кликнуть" туда и убедиться, что нужные изменения произошли.

Если же этот метод делает какую-то важную логику, то возможно стоит переопределить его вне сущности реакта, создать отдельный класс или функцию и тестировать отдельно ее.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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