Тёмный

Тестирование React приложения 

Михаил Непомнящий
Подписаться 58 тыс.
Просмотров 63 тыс.
50% 1

Как писать тесты для React приложений и какие виды тестов бывают, как начать писать первые тесты и повысить надежность своих компонентов. Разбираем React Testing Library, который доступен из коробки при использовании утилиты create-react-app.
Мои курсы по вебу с купонами:
✅ mishanep.com/
📢 Поддержка канала:
/ mishanep
www.tinkoff.ru/rm/nepomnyasch...
paypal.me/mishanep

Опубликовано:

 

23 июн 2021

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 78   
@antonchudinov2057
@antonchudinov2057 Месяц назад
Спустя два года все равно актуально, благодарю за качественный материал!
@whhhhitee
@whhhhitee 2 года назад
Очень крутая дикция и манера подачи
@johnjohhoun1716
@johnjohhoun1716 Год назад
07:00 запуск тестов 10:50 директивы test, it, describe 14:00 директивы expect, toBeInTheDocument 16:00 getByRole, queryByRole 19:20 snapshot 30:00 muck function 32:51 screen.debug() 34:40 placeholder for input 36:20 fireEvent, userEvent 38:00 userEvent.type() - check onChange function with help of jest.fn() mock function 39:40 библиотека classnames 46:50 test CSS classes 49:16 метод toHaveStyle - toHaveStyle работает в том случае, если ты передашь стили (display: flex) через атрибут style, иначе это просто стили с класса 51:00 tests and commit - options a and --watchAll 52:50 useEffect, динамическая проверка
@serjdenisov2114
@serjdenisov2114 2 года назад
Михаил, классно объясняете - спокойно, хорошо, понятно. Спасибо большое!!!!!
@aaronvasilev2371
@aaronvasilev2371 3 года назад
Михаил, это видео - именно то что было необходимо мне прямо сейчас. Посмотрю его как только будет свободное время. Огромное Вам спасибо!
@artemkhegay616
@artemkhegay616 2 года назад
Спасибо за видео урок! Примеры компонентов и как их тестировать были замечательные. Хочу пожелать дальнейшего развития тебе и твоему каналу!
@zakharkibanov8929
@zakharkibanov8929 3 года назад
Как же вовремя!) Спасибо огромное. Типа подписался несколько месяцев назад из-за одного видео, даже вспомнить не могу - какого, а тут просто то, что нужно в отличном виде. Вот так удача))) Очень большое спасибо!
@alex45779
@alex45779 2 года назад
ОГРОМНОЕ СПАСИБО!! Преподавание ведете легко и свобоно! Сразу чувствуется, что полностью в теме!
@igortrifonov9339
@igortrifonov9339 2 года назад
Спасибо большое за видео, очень приятно слушать Вас, понятно объясняете!
@andreyyastrebtsov4367
@andreyyastrebtsov4367 2 года назад
Отличное видео, большое спасибо!!! Очень чётко, понятно и просто! Примеры супер!
@sergeyplotnikov5031
@sergeyplotnikov5031 2 года назад
Большое спасибо за подробное объяснение с отличными примерами!
@anazkomult
@anazkomult 2 года назад
Михаил, спасибо! Отличное видео! Надеюсь на продолжения темы тестирования! 8-)
@vadimniziev5489
@vadimniziev5489 3 года назад
Спасибо большое, отличное видео! Как раз то, что нужно!
@SeganMert
@SeganMert 2 года назад
Ух, информативно и по пунктикам, как раз как надо) все за час разложил, даже css задел) Не помешало бы конечно еще задеть API тесты, но было круто)
@mikhailmikhailovich1037
@mikhailmikhailovich1037 Год назад
Очень качественное видео про тестирование React приложения. Спасибо.
@evgeniyn1542
@evgeniyn1542 3 года назад
Тесты это круто, спасибо за видео! :)
@jses8560
@jses8560 3 года назад
Спасибо за видео по тестам в React!
@user-sd9je7ov8o
@user-sd9je7ov8o 2 года назад
Спасибо за материал. Для старта самое оно!
@serg1221
@serg1221 2 года назад
Немного по полочкам в голове расставили, спасибо большое
@alexstepanchhuk683
@alexstepanchhuk683 3 года назад
Замечательное объяснение! Спасибо!
@user-tz6ug2eo8j
@user-tz6ug2eo8j 10 месяцев назад
Спасибо вам, очень информативно и без воды
@vladvoloshenko5701
@vladvoloshenko5701 2 года назад
решил посмотреть чуть позже, смотрю уже 3 месяца прошло с моего прошлого комента, в общем начинаю смотреть, за контент спасибо)))
@egorpobylets6597
@egorpobylets6597 2 года назад
Спасибо! Отличный материал
@romanmelon5845
@romanmelon5845 2 года назад
Дякую за відео, класні кейси покриті для початківців. дуже зрозуміло!
@Oksan4ik1
@Oksan4ik1 11 месяцев назад
Спасибо вас огромное) Изучаю Реакт сейчас, поняла без усилий и пересмотров!)
@pauldudich
@pauldudich Год назад
Отличная подача, спасибо. Пару моментов: 1. не dinamyc a dynamic, там еще были грамматические ошикби (советую установить плагин у vs code - Code Spell Checker) 2. toHaveStyle работает в том случае, если ты передашь стили (display: flex) через атрибут style, иначе это просто стили с класса
@user-gi9xk7jt1f
@user-gi9xk7jt1f 2 года назад
Такой добрый осенний голос)
@_GreenSnake_
@_GreenSnake_ Год назад
Спасибо за Ваш труд
@HaveFun77777
@HaveFun77777 3 года назад
Круто! Спасибо!))
@user-fn2ud8ec3i
@user-fn2ud8ec3i Год назад
Отличное видео!
@johnconnor9787
@johnconnor9787 Год назад
30:00 muck function 32:51 screen.debug() 38:00 userEvent.type() - check onChange function with help of jest.fn() mock function 46:50 test classes
@viktormoskalev2269
@viktormoskalev2269 2 года назад
Крутая подача, странно что так мало подписчиков
@ValentinProtasevich
@ValentinProtasevich 10 месяцев назад
большое спасибо!
@vanunsakanyan2188
@vanunsakanyan2188 Год назад
круто, спасибо
@the.gist.
@the.gist. 2 года назад
Спасибо!
@ondrui
@ondrui 2 года назад
Михаил, спасибо большое за уроки! У меня такой вопрос к вам - как подключить в VS code автокомплит методов jest?
@VorobyevAlexander
@VorobyevAlexander 3 года назад
Спасибо за видео. Ряд вопросов: 1. Можно ли конфигурировать определенный тест так, что если он проваливается - прерывается все тестирование 2. Если разрабатывать через тестирование. Можно ли тесты помечать типа "функционал не реализован". Т.е. красным отображается в статистике, но сам тест не выполняется. 3. Возможно ли доработать тест динамического тестирования класса в Search. Т.е в рамках одного теста изначально поле ввода пустое - проверяем отсутствие класса filled. Потом userEvent.type() - проверяем появление этого класса. Сам попробовал не получилось - как я понимаю потому что нужно подсунуть стейт... но тест валится и не дает использовать useState.
@mishanep
@mishanep 3 года назад
По первым двум вопросам не подскажу, у меня нет ответа. По второму - стейт подсовывать не надо. Пользовательское действие через userEvent уже должно сымитировать изменение стейта, а значит уже можно проверять на предмет того, случилось ли изменение или нет. Можно в один тест это положить и последовательно в одном it утверждении сначала проверить наличие класса при пустом поле, а потом выполнить userEvent и посмотреть что стало в наборе классов.
@Churchkhelass
@Churchkhelass Год назад
Спасибо братишка что все так четко объяснил!
@lirrr6555
@lirrr6555 2 года назад
Спасибо за видео. Главный вопрос - как понять какие тесты действительно нужно писать, а какие нет? потому что кажется, что можно придумать под 100 тестов на каждую мелочь и увеличить время разработки в 5 раз, не получив сопоставимой пользы.
@user-zp9iq1po5o
@user-zp9iq1po5o Год назад
Думаю, что нужно воспринимать тесты как документирование модулей и компонентов, когда опишешь всё закладываемое поведение - тогда пора и завязывать
@ksenyaD
@ksenyaD 10 месяцев назад
Топ👍🏻
@vladislavfedorov6537
@vladislavfedorov6537 2 года назад
Хорошее видео, но на мой взгляд с тестом стилей тут что-то не то, тестирование по classNames противоречит философии тестирования, тесты должны рассматривать проект с точки зрения пользователя, а пользователю не важно есть ли className с определенным именем на определенном элементе, classNames могу поменяться/перетасоваться так что UI останется прежним, а тесты упадут. По идее правильно было бы смотреть на конкретные стили, изменился ли backgroundColor после какого-либо действия и тд, но react-testing-library при своей эмуляции не создает дом и стилей уэтих элементов не посмотреть(
@mariashabalina6299
@mariashabalina6299 Год назад
Подскажите, пожалуйста, насчет всех видов тестирования. Нужно ли в одном проекте использовать юнит-тестирование, интеграционное и end2end тестирование? Или ты выбираешь какой вариант тебе ближе и тот постоянно используешь?
@mishanep
@mishanep Год назад
Зависит от требований заказчика. Потому как он и оплачивает время на создание тестов. Это дорого. Юнит тесты - самые дешевые, end2end - самые дорогие. В идеале, чтобы были все виды тестов.
@moloko6469
@moloko6469 Год назад
а может быть метод toHaveStyle() проверяет наличие атрибута style у элемента, ну по типу ?? это предположение))
@emil7881
@emil7881 7 месяцев назад
ни у кого не появлялась ошибка Warning: An update to App inside a test was not wrapped in act(...) в интеграционных тестах? не пойму как решить p.s. оборачиваю в act. но начинает ругаться ESLint: Avoid wrapping Testing Library util calls in `act`(testing-library/no-unnecessary-act)
@storozhukua
@storozhukua 2 года назад
Дякую.
@KirillKolchanov
@KirillKolchanov Год назад
не знал про либу classnames - понравилась))
@takemukashov3064
@takemukashov3064 Год назад
clsx лучше
@KirillKolchanov
@KirillKolchanov Год назад
@@takemukashov3064 к Ага, уже знаю такую))
@HaveFun77777
@HaveFun77777 3 года назад
Еще интересно как работать с редаксом в тестах. И скажите, пожалуйста. Зачем нужны такие простые тесты, если я во время разработки сам вижу, что выводится на страницу, а что нет?
@mishanep
@mishanep 3 года назад
Разработка - штука итеративная. Когда вносишь доработки или делаешь рефакторинг, не сложно что то сломать. Удержать в голове все нюансы функционала каждого компонента и их взаимодействия не так то просто, а тесты снимают этот вопрос. Одной командой мы узнаем, если что-то пошло не так. Ну и TDD - это когда мы сначала описываем тест-кейсы, того как должен вести себя компонент, а потом только берёмся за реализацию. Если не говорить про стили, то базовый функционал можно закрыть, даже не запуская сборку.
@HaveFun77777
@HaveFun77777 3 года назад
Было бы здорово если вы расскажите про то как работать с ошибками в React.
@mishanep
@mishanep 3 года назад
Речь про стадию разработки или про стадию production?
@HaveFun77777
@HaveFun77777 3 года назад
@@mishanep Про Boundary
@sergeys4732
@sergeys4732 3 года назад
@@HaveFun77777 а что там рассказывать , оборачиваешь в hoc и все. В документации эта тема хорошо раскрыта )
@sviatbondar1721
@sviatbondar1721 Год назад
Если у кого самый последний тест кейс не отрабатывает то это из за того что те места кода которые вызивают обновление стейта нужно оборачивать в act(); test("search filter works", () => { render(); expect(screen.getByText("react")).toBeInTheDocument(); expect(screen.getByText("css")).toBeInTheDocument(); act(() => { userEvent.type(screen.getByRole("textbox"), "script"); }); expect(screen.queryByText('css')).toBeNull(); expect(screen.queryByText('java script')).toBeInTheDocument(); }); Вот так вот оно отработало без ошыбок, а то пару часов бился и не мог понять почему у автора все работает а у меня нет, но потом перезапустил проект и запустил тесты и мне насипалось кучу warning где как раз и советуется , те места которые вызивают обновление стейта нужно оборачивать в act(); Спасибо автору за урок .
@repetonline8065
@repetonline8065 10 месяцев назад
Не работает почему-то тест самый последний с фильтрацией, в консоли говорится, что нужно использовать обёртку act()
@andranikgrigoryan6765
@andranikgrigoryan6765 2 года назад
@user-rg9ps9is3o
@user-rg9ps9is3o 2 года назад
Интересно, а какую то отдельную ошибку можно игнорировать в Jest? Нашел, как отдельные папки в игнор добавлять, а как конкретное правило игнорить...
@kirillzarya5229
@kirillzarya5229 2 года назад
Подскажите , как эти тесты работают если в приложении задействован redux?
@mishanep
@mishanep 2 года назад
Да нормально работают. Просто надо учитывать особенности редакса и имитировать стор с провайдером вокруг компонента.
@koshgosh3081
@koshgosh3081 Год назад
возможно прослушал, а что означает значает / / эти штуки и значек i после них?
@mishanep
@mishanep Год назад
Это синтаксис регулярных выражений в JS. Символ i означает регистронезависимый, т.е. одинаково для больших и малых букв.
@user-kt8fu6bn9f
@user-kt8fu6bn9f 2 года назад
АААААААА белая тема в вскоде 😲😲😲😲
@leoibra6296
@leoibra6296 Год назад
использую в своем проекте, но получаю ошибку на использование jest.fn(). пишет что jest is not defined. установил отдельный пакет jest globals, получил следующую ошибку Do not import `@jest/globals` outside of the Jest test environment. как можно решить данную проблему?
@mishanep
@mishanep Год назад
Вероятно у вас используется другой вариант сборки и вам нужно ручками настроить setupTests.js
@leoibra6296
@leoibra6296 Год назад
@@mishanep оказалось что проблема в настройках проекта, создав новый проект с базовыми настройками проверил все и работает как нужно) еще такой вопрос, у меня в компоненте есть элемент при наведении на которого (onMouseEnter) срабатывает функция, как можно протестировать этот момент?
@iGotton
@iGotton 2 года назад
+
@mkonin
@mkonin Год назад
Ну все, после этого видоса я точно готов жениться )
@Pink_Piglin
@Pink_Piglin Год назад
Планируете записывать видео курс Jest Enzyme? На всем ютубе инфа размазана, приходится часами слушать неструктурированные, местами не понятные обучающие видеоролики. То-то дело Ваши! Я бы и на платной платформе купил ваш курс по этой теме, но нету, все полноценные курсы на английском только!
@mishanep
@mishanep Год назад
С Enzyme уже несколько лет не работал. Не знаю как там библиотека развивается. Вообще курс по тестированию рассматривается мною как один из возможных в качестве следующего проекта. Но не могу ничего обещать.
@user-ct4qt9cg7l
@user-ct4qt9cg7l 6 месяцев назад
Это одно русское видио в конце 2023 года !! Которое реально полезное и помогает понять как работают тесты с реактом и не только ! По больше бы реально полезных видео от @Mихаил Непомнящий .
@lavanda_funny
@lavanda_funny Год назад
Добрые люди,подскажите начинающему AQA js где этот шаблон взять? Установила @testing-lib.../react и jest-dom но никаких файлов кроме node-modules и .json нету(((
Далее
МИГРАНТ ВА ПОЛИЦИЯ 😂👍
00:12
Просмотров 313 тыс.
Jest. Unit Тестирование в JavaScript
1:27:05
Next.js with React Testing Library, Jest, TypeScript
25:04
React Query. Быстрый старт
30:09
Просмотров 48 тыс.