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

  Рет қаралды 62,327

Михаил Непомнящий

Михаил Непомнящий

3 жыл бұрын

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

Пікірлер: 78
@antonchudinov2057
@antonchudinov2057 Ай бұрын
Спустя два года все равно актуально, благодарю за качественный материал!
@whhhhitee
@whhhhitee 2 жыл бұрын
Очень крутая дикция и манера подачи
@alex45779
@alex45779 2 жыл бұрын
ОГРОМНОЕ СПАСИБО!! Преподавание ведете легко и свобоно! Сразу чувствуется, что полностью в теме!
@aaronvasilev2371
@aaronvasilev2371 3 жыл бұрын
Михаил, это видео - именно то что было необходимо мне прямо сейчас. Посмотрю его как только будет свободное время. Огромное Вам спасибо!
@zakharkibanov8929
@zakharkibanov8929 3 жыл бұрын
Как же вовремя!) Спасибо огромное. Типа подписался несколько месяцев назад из-за одного видео, даже вспомнить не могу - какого, а тут просто то, что нужно в отличном виде. Вот так удача))) Очень большое спасибо!
@artemkhegay616
@artemkhegay616 2 жыл бұрын
Спасибо за видео урок! Примеры компонентов и как их тестировать были замечательные. Хочу пожелать дальнейшего развития тебе и твоему каналу!
@serjdenisov2114
@serjdenisov2114 2 жыл бұрын
Михаил, классно объясняете - спокойно, хорошо, понятно. Спасибо большое!!!!!
@igortrifonov9339
@igortrifonov9339 2 жыл бұрын
Спасибо большое за видео, очень приятно слушать Вас, понятно объясняете!
@andreyyastrebtsov4367
@andreyyastrebtsov4367 2 жыл бұрын
Отличное видео, большое спасибо!!! Очень чётко, понятно и просто! Примеры супер!
@sergeyplotnikov5031
@sergeyplotnikov5031 2 жыл бұрын
Большое спасибо за подробное объяснение с отличными примерами!
@vadimniziev5489
@vadimniziev5489 3 жыл бұрын
Спасибо большое, отличное видео! Как раз то, что нужно!
@anazkomult
@anazkomult 2 жыл бұрын
Михаил, спасибо! Отличное видео! Надеюсь на продолжения темы тестирования! 8-)
@mikhailmikhailovich1037
@mikhailmikhailovich1037 Жыл бұрын
Очень качественное видео про тестирование React приложения. Спасибо.
@evgeniyn1542
@evgeniyn1542 3 жыл бұрын
Тесты это круто, спасибо за видео! :)
@user-tz6ug2eo8j
@user-tz6ug2eo8j 9 ай бұрын
Спасибо вам, очень информативно и без воды
@user-sd9je7ov8o
@user-sd9je7ov8o 2 жыл бұрын
Спасибо за материал. Для старта самое оно!
@jses8560
@jses8560 3 жыл бұрын
Спасибо за видео по тестам в React!
@serg1221
@serg1221 2 жыл бұрын
Немного по полочкам в голове расставили, спасибо большое
@alexstepanchhuk683
@alexstepanchhuk683 3 жыл бұрын
Замечательное объяснение! Спасибо!
@Oksan4ik1
@Oksan4ik1 10 ай бұрын
Спасибо вас огромное) Изучаю Реакт сейчас, поняла без усилий и пересмотров!)
@SeganMert
@SeganMert 2 жыл бұрын
Ух, информативно и по пунктикам, как раз как надо) все за час разложил, даже css задел) Не помешало бы конечно еще задеть API тесты, но было круто)
@egorpobylets6597
@egorpobylets6597 2 жыл бұрын
Спасибо! Отличный материал
@vladvoloshenko5701
@vladvoloshenko5701 2 жыл бұрын
решил посмотреть чуть позже, смотрю уже 3 месяца прошло с моего прошлого комента, в общем начинаю смотреть, за контент спасибо)))
@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, динамическая проверка
@_GreenSnake_
@_GreenSnake_ Жыл бұрын
Спасибо за Ваш труд
@romanmelon5845
@romanmelon5845 2 жыл бұрын
Дякую за відео, класні кейси покриті для початківців. дуже зрозуміло!
@user-fn2ud8ec3i
@user-fn2ud8ec3i Жыл бұрын
Отличное видео!
@HaveFun77777
@HaveFun77777 3 жыл бұрын
Круто! Спасибо!))
@user-gi9xk7jt1f
@user-gi9xk7jt1f 2 жыл бұрын
Такой добрый осенний голос)
@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
@vanunsakanyan2188
@vanunsakanyan2188 Жыл бұрын
круто, спасибо
@ValentinProtasevich
@ValentinProtasevich 10 ай бұрын
большое спасибо!
@viktormoskalev2269
@viktormoskalev2269 2 жыл бұрын
Крутая подача, странно что так мало подписчиков
@the.gist.
@the.gist. 2 жыл бұрын
Спасибо!
@pauldudich
@pauldudich Жыл бұрын
Отличная подача, спасибо. Пару моментов: 1. не dinamyc a dynamic, там еще были грамматические ошикби (советую установить плагин у vs code - Code Spell Checker) 2. toHaveStyle работает в том случае, если ты передашь стили (display: flex) через атрибут style, иначе это просто стили с класса
@ondrui
@ondrui 2 жыл бұрын
Михаил, спасибо большое за уроки! У меня такой вопрос к вам - как подключить в VS code автокомплит методов jest?
@Churchkhelass
@Churchkhelass Жыл бұрын
Спасибо братишка что все так четко объяснил!
@ksenyaD
@ksenyaD 10 ай бұрын
Топ👍🏻
@KirillKolchanov
@KirillKolchanov Жыл бұрын
не знал про либу classnames - понравилась))
@takemukashov3064
@takemukashov3064 Жыл бұрын
clsx лучше
@KirillKolchanov
@KirillKolchanov Жыл бұрын
@@takemukashov3064 к Ага, уже знаю такую))
@VorobyevAlexander
@VorobyevAlexander 3 жыл бұрын
Спасибо за видео. Ряд вопросов: 1. Можно ли конфигурировать определенный тест так, что если он проваливается - прерывается все тестирование 2. Если разрабатывать через тестирование. Можно ли тесты помечать типа "функционал не реализован". Т.е. красным отображается в статистике, но сам тест не выполняется. 3. Возможно ли доработать тест динамического тестирования класса в Search. Т.е в рамках одного теста изначально поле ввода пустое - проверяем отсутствие класса filled. Потом userEvent.type() - проверяем появление этого класса. Сам попробовал не получилось - как я понимаю потому что нужно подсунуть стейт... но тест валится и не дает использовать useState.
@mishanep
@mishanep 3 жыл бұрын
По первым двум вопросам не подскажу, у меня нет ответа. По второму - стейт подсовывать не надо. Пользовательское действие через userEvent уже должно сымитировать изменение стейта, а значит уже можно проверять на предмет того, случилось ли изменение или нет. Можно в один тест это положить и последовательно в одном it утверждении сначала проверить наличие класса при пустом поле, а потом выполнить userEvent и посмотреть что стало в наборе классов.
@moloko6469
@moloko6469 Жыл бұрын
а может быть метод toHaveStyle() проверяет наличие атрибута style у элемента, ну по типу ?? это предположение))
@storozhukua
@storozhukua 2 жыл бұрын
Дякую.
@lirrr6555
@lirrr6555 Жыл бұрын
Спасибо за видео. Главный вопрос - как понять какие тесты действительно нужно писать, а какие нет? потому что кажется, что можно придумать под 100 тестов на каждую мелочь и увеличить время разработки в 5 раз, не получив сопоставимой пользы.
@user-zp9iq1po5o
@user-zp9iq1po5o Жыл бұрын
Думаю, что нужно воспринимать тесты как документирование модулей и компонентов, когда опишешь всё закладываемое поведение - тогда пора и завязывать
@mariashabalina6299
@mariashabalina6299 Жыл бұрын
Подскажите, пожалуйста, насчет всех видов тестирования. Нужно ли в одном проекте использовать юнит-тестирование, интеграционное и end2end тестирование? Или ты выбираешь какой вариант тебе ближе и тот постоянно используешь?
@mishanep
@mishanep Жыл бұрын
Зависит от требований заказчика. Потому как он и оплачивает время на создание тестов. Это дорого. Юнит тесты - самые дешевые, end2end - самые дорогие. В идеале, чтобы были все виды тестов.
@vladislavfedorov6537
@vladislavfedorov6537 2 жыл бұрын
Хорошее видео, но на мой взгляд с тестом стилей тут что-то не то, тестирование по classNames противоречит философии тестирования, тесты должны рассматривать проект с точки зрения пользователя, а пользователю не важно есть ли className с определенным именем на определенном элементе, classNames могу поменяться/перетасоваться так что UI останется прежним, а тесты упадут. По идее правильно было бы смотреть на конкретные стили, изменился ли backgroundColor после какого-либо действия и тд, но react-testing-library при своей эмуляции не создает дом и стилей уэтих элементов не посмотреть(
@user-rg9ps9is3o
@user-rg9ps9is3o 2 жыл бұрын
Интересно, а какую то отдельную ошибку можно игнорировать в Jest? Нашел, как отдельные папки в игнор добавлять, а как конкретное правило игнорить...
@repetonline8065
@repetonline8065 9 ай бұрын
Не работает почему-то тест самый последний с фильтрацией, в консоли говорится, что нужно использовать обёртку act()
@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)
@HaveFun77777
@HaveFun77777 3 жыл бұрын
Еще интересно как работать с редаксом в тестах. И скажите, пожалуйста. Зачем нужны такие простые тесты, если я во время разработки сам вижу, что выводится на страницу, а что нет?
@mishanep
@mishanep 3 жыл бұрын
Разработка - штука итеративная. Когда вносишь доработки или делаешь рефакторинг, не сложно что то сломать. Удержать в голове все нюансы функционала каждого компонента и их взаимодействия не так то просто, а тесты снимают этот вопрос. Одной командой мы узнаем, если что-то пошло не так. Ну и TDD - это когда мы сначала описываем тест-кейсы, того как должен вести себя компонент, а потом только берёмся за реализацию. Если не говорить про стили, то базовый функционал можно закрыть, даже не запуская сборку.
@andranikgrigoryan6765
@andranikgrigoryan6765 2 жыл бұрын
@user-kt8fu6bn9f
@user-kt8fu6bn9f 2 жыл бұрын
АААААААА белая тема в вскоде 😲😲😲😲
@HaveFun77777
@HaveFun77777 3 жыл бұрын
Было бы здорово если вы расскажите про то как работать с ошибками в React.
@mishanep
@mishanep 3 жыл бұрын
Речь про стадию разработки или про стадию production?
@HaveFun77777
@HaveFun77777 3 жыл бұрын
@@mishanep Про Boundary
@sergeys4732
@sergeys4732 3 жыл бұрын
@@HaveFun77777 а что там рассказывать , оборачиваешь в hoc и все. В документации эта тема хорошо раскрыта )
@kirillzarya5229
@kirillzarya5229 2 жыл бұрын
Подскажите , как эти тесты работают если в приложении задействован redux?
@mishanep
@mishanep 2 жыл бұрын
Да нормально работают. Просто надо учитывать особенности редакса и имитировать стор с провайдером вокруг компонента.
@koshgosh3081
@koshgosh3081 Жыл бұрын
возможно прослушал, а что означает значает / / эти штуки и значек i после них?
@mishanep
@mishanep Жыл бұрын
Это синтаксис регулярных выражений в JS. Символ i означает регистронезависимый, т.е. одинаково для больших и малых букв.
@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) срабатывает функция, как можно протестировать этот момент?
@sviatbondar1721
@sviatbondar1721 11 ай бұрын
Если у кого самый последний тест кейс не отрабатывает то это из за того что те места кода которые вызивают обновление стейта нужно оборачивать в 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(); Спасибо автору за урок .
@mkonin
@mkonin Жыл бұрын
Ну все, после этого видоса я точно готов жениться )
@iGotton
@iGotton 2 жыл бұрын
+
@Pink_Piglin
@Pink_Piglin Жыл бұрын
Планируете записывать видео курс Jest Enzyme? На всем ютубе инфа размазана, приходится часами слушать неструктурированные, местами не понятные обучающие видеоролики. То-то дело Ваши! Я бы и на платной платформе купил ваш курс по этой теме, но нету, все полноценные курсы на английском только!
@mishanep
@mishanep Жыл бұрын
С Enzyme уже несколько лет не работал. Не знаю как там библиотека развивается. Вообще курс по тестированию рассматривается мною как один из возможных в качестве следующего проекта. Но не могу ничего обещать.
@lavanda_funny
@lavanda_funny Жыл бұрын
Добрые люди,подскажите начинающему AQA js где этот шаблон взять? Установила @testing-lib.../react и jest-dom но никаких файлов кроме node-modules и .json нету(((
@user-ct4qt9cg7l
@user-ct4qt9cg7l 6 ай бұрын
Это одно русское видио в конце 2023 года !! Которое реально полезное и помогает понять как работают тесты с реактом и не только ! По больше бы реально полезных видео от @Mихаил Непомнящий .
Add Jest Unit Testing to React Vite
29:44
Ivaylo Papazov
Рет қаралды 2,6 М.
When You Get Ran Over By A Car...
00:15
Jojo Sim
Рет қаралды 23 МЛН
THEY WANTED TO TAKE ALL HIS GOODIES 🍫🥤🍟😂
00:17
OKUNJATA
Рет қаралды 21 МЛН
Обработка ошибок в React-приложении | Error Boundary
19:10
Михаил Непомнящий
Рет қаралды 19 М.
Testing In React Tutorial - Jest and React Testing Library
21:28
Jest. Unit Тестирование в JavaScript
1:27:05
Владилен Минин
Рет қаралды 168 М.
Тестирование React-компонентов с Redux
19:33
Михаил Непомнящий
Рет қаралды 14 М.
Storybook - Быстрый курс по работе и тестированию с React
37:39
How to use Vitest with Jest-DOM and React Testing Library
12:19
EricWinkDev
Рет қаралды 32 М.
React Testing Tutorial (Jest + React Testing Library)
22:16
Kris Foster
Рет қаралды 242 М.