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

Поделиться
HTML-код
  • Опубликовано: 22 ноя 2024

Комментарии • 80

  • @midjiro
    @midjiro 4 месяца назад +2

    Михаил, спасибо вам за прекрасное объяснение материала. Вы помогли мне разобраться с темой, прикасаться к которой мне не хотелось до последнего)

  • @ДаниилКозлов-ж5г
    @ДаниилКозлов-ж5г 11 месяцев назад +3

    Это одно русское видио в конце 2023 года !! Которое реально полезное и помогает понять как работают тесты с реактом и не только ! По больше бы реально полезных видео от @Mихаил Непомнящий .

  • @antonchudinov2057
    @antonchudinov2057 5 месяцев назад +2

    Спустя два года все равно актуально, благодарю за качественный материал!

  • @whhhhitee
    @whhhhitee 2 года назад +31

    Очень крутая дикция и манера подачи

  • @ВасилийБарков-к2э
    @ВасилийБарков-к2э 2 года назад +4

    Такой добрый осенний голос)

  • @serjdenisov2114
    @serjdenisov2114 3 года назад +17

    Михаил, классно объясняете - спокойно, хорошо, понятно. Спасибо большое!!!!!

  • @johnjohhoun1716
    @johnjohhoun1716 Год назад +17

    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, динамическая проверка

  • @artemkhegay616
    @artemkhegay616 3 года назад +5

    Спасибо за видео урок! Примеры компонентов и как их тестировать были замечательные. Хочу пожелать дальнейшего развития тебе и твоему каналу!

  • @Oksan4ik1
    @Oksan4ik1 Год назад

    Спасибо вас огромное) Изучаю Реакт сейчас, поняла без усилий и пересмотров!)

  • @alex45779
    @alex45779 2 года назад

    ОГРОМНОЕ СПАСИБО!! Преподавание ведете легко и свобоно! Сразу чувствуется, что полностью в теме!

  • @АндрейХмара-р2г
    @АндрейХмара-р2г Год назад

    Спасибо вам, очень информативно и без воды

  • @SeganMert
    @SeganMert 3 года назад +4

    Ух, информативно и по пунктикам, как раз как надо) все за час разложил, даже css задел)
    Не помешало бы конечно еще задеть API тесты, но было круто)

  • @mikhailmikhailovich1037
    @mikhailmikhailovich1037 Год назад

    Очень качественное видео про тестирование React приложения. Спасибо.

  • @igortrifonov9339
    @igortrifonov9339 3 года назад +2

    Спасибо большое за видео, очень приятно слушать Вас, понятно объясняете!

  • @pauldudich
    @pauldudich 2 года назад +11

    Отличная подача, спасибо. Пару моментов:
    1. не dinamyc a dynamic, там еще были грамматические ошикби (советую установить плагин у vs code - Code Spell Checker)
    2. toHaveStyle работает в том случае, если ты передашь стили (display: flex) через атрибут style, иначе это просто стили с класса

  • @serg1221
    @serg1221 2 года назад

    Немного по полочкам в голове расставили, спасибо большое

  • @johnconnor9787
    @johnconnor9787 2 года назад +2

    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

  • @zakharkibanov8929
    @zakharkibanov8929 3 года назад +1

    Как же вовремя!) Спасибо огромное. Типа подписался несколько месяцев назад из-за одного видео, даже вспомнить не могу - какого, а тут просто то, что нужно в отличном виде. Вот так удача))) Очень большое спасибо!

  • @РоманБыков-э6м
    @РоманБыков-э6м 2 года назад

    Спасибо за материал. Для старта самое оно!

  • @vladvoloshenko5701
    @vladvoloshenko5701 3 года назад +1

    решил посмотреть чуть позже, смотрю уже 3 месяца прошло с моего прошлого комента, в общем начинаю смотреть, за контент спасибо)))

  • @sergeyplotnikov5031
    @sergeyplotnikov5031 2 года назад

    Большое спасибо за подробное объяснение с отличными примерами!

  • @aarovas
    @aarovas 3 года назад +2

    Михаил, это видео - именно то что было необходимо мне прямо сейчас. Посмотрю его как только будет свободное время. Огромное Вам спасибо!

  • @_GreenSnake_
    @_GreenSnake_ Год назад

    Спасибо за Ваш труд

  • @egorpobylets6597
    @egorpobylets6597 2 года назад

    Спасибо! Отличный материал

  • @РусланШарипов-п9о

    Отличное видео!

  • @andreyyastrebtsov4367
    @andreyyastrebtsov4367 2 года назад

    Отличное видео, большое спасибо!!! Очень чётко, понятно и просто! Примеры супер!

  • @ValentinProtasevich
    @ValentinProtasevich Год назад

    большое спасибо!

  • @alexstepanchhuk683
    @alexstepanchhuk683 3 года назад

    Замечательное объяснение! Спасибо!

  • @vadimniziev5489
    @vadimniziev5489 3 года назад

    Спасибо большое, отличное видео! Как раз то, что нужно!

  • @romanmelon5845
    @romanmelon5845 2 года назад +1

    Дякую за відео, класні кейси покриті для початківців.
    дуже зрозуміло!

  • @VorobyevAlexander
    @VorobyevAlexander 3 года назад +3

    Спасибо за видео. Ряд вопросов:
    1. Можно ли конфигурировать определенный тест так, что если он проваливается - прерывается все тестирование
    2. Если разрабатывать через тестирование. Можно ли тесты помечать типа "функционал не реализован". Т.е. красным отображается в статистике, но сам тест не выполняется.
    3. Возможно ли доработать тест динамического тестирования класса в Search. Т.е в рамках одного теста изначально поле ввода пустое - проверяем отсутствие класса filled. Потом userEvent.type() - проверяем появление этого класса. Сам попробовал не получилось - как я понимаю потому что нужно подсунуть стейт... но тест валится и не дает использовать useState.

    • @mishanep
      @mishanep  3 года назад +1

      По первым двум вопросам не подскажу, у меня нет ответа.
      По второму - стейт подсовывать не надо. Пользовательское действие через userEvent уже должно сымитировать изменение стейта, а значит уже можно проверять на предмет того, случилось ли изменение или нет. Можно в один тест это положить и последовательно в одном it утверждении сначала проверить наличие класса при пустом поле, а потом выполнить userEvent и посмотреть что стало в наборе классов.

  • @jses8560
    @jses8560 3 года назад

    Спасибо за видео по тестам в React!

  • @evgeniyn1542
    @evgeniyn1542 3 года назад

    Тесты это круто, спасибо за видео! :)

  • @vanunsakanyan2188
    @vanunsakanyan2188 Год назад

    круто, спасибо

  • @anazkomult
    @anazkomult 2 года назад

    Михаил, спасибо! Отличное видео! Надеюсь на продолжения темы тестирования! 8-)

  • @Churchkhelass
    @Churchkhelass 2 года назад

    Спасибо братишка что все так четко объяснил!

  • @viktormoskalev2269
    @viktormoskalev2269 2 года назад

    Крутая подача, странно что так мало подписчиков

  • @emil7881
    @emil7881 Год назад +1

    ни у кого не появлялась ошибка 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)

  • @the.gist.
    @the.gist. 3 года назад

    Спасибо!

  • @lirrr6555
    @lirrr6555 2 года назад +13

    Спасибо за видео. Главный вопрос - как понять какие тесты действительно нужно писать, а какие нет? потому что кажется, что можно придумать под 100 тестов на каждую мелочь и увеличить время разработки в 5 раз, не получив сопоставимой пользы.

    • @Антон-ю2п6е
      @Антон-ю2п6е 2 года назад +5

      Думаю, что нужно воспринимать тесты как документирование модулей и компонентов, когда опишешь всё закладываемое поведение - тогда пора и завязывать

  • @moloko6469
    @moloko6469 Год назад

    а может быть метод toHaveStyle() проверяет наличие атрибута style у элемента, ну по типу ??
    это предположение))

  • @Giri-16108
    @Giri-16108 3 года назад

    Круто! Спасибо!))

  • @KirillKolchanov
    @KirillKolchanov 2 года назад

    не знал про либу classnames - понравилась))

  • @ilyasviridov5887
    @ilyasviridov5887 2 месяца назад

    Nice boost 🎉

  • @ksenyaD
    @ksenyaD Год назад

    Топ👍🏻

  • @vladislavfedorov6537
    @vladislavfedorov6537 2 года назад +2

    Хорошее видео, но на мой взгляд с тестом стилей тут что-то не то, тестирование по classNames противоречит философии тестирования, тесты должны рассматривать проект с точки зрения пользователя, а пользователю не важно есть ли className с определенным именем на определенном элементе, classNames могу поменяться/перетасоваться так что UI останется прежним, а тесты упадут. По идее правильно было бы смотреть на конкретные стили, изменился ли backgroundColor после какого-либо действия и тд, но react-testing-library при своей эмуляции не создает дом и стилей уэтих элементов не посмотреть(

  • @repetonline8065
    @repetonline8065 Год назад

    Не работает почему-то тест самый последний с фильтрацией, в консоли говорится, что нужно использовать обёртку act()

  • @ondrui
    @ondrui 3 года назад

    Михаил, спасибо большое за уроки! У меня такой вопрос к вам - как подключить в VS code автокомплит методов jest?

  • @Giri-16108
    @Giri-16108 3 года назад

    Было бы здорово если вы расскажите про то как работать с ошибками в React.

    • @mishanep
      @mishanep  3 года назад

      Речь про стадию разработки или про стадию production?

    • @Giri-16108
      @Giri-16108 3 года назад

      @@mishanep Про Boundary

    • @sergeys4732
      @sergeys4732 3 года назад

      @@Giri-16108 а что там рассказывать , оборачиваешь в hoc и все. В документации эта тема хорошо раскрыта )

  • @АндрейЛ-щ3э
    @АндрейЛ-щ3э 2 года назад

    Интересно, а какую то отдельную ошибку можно игнорировать в Jest? Нашел, как отдельные папки в игнор добавлять, а как конкретное правило игнорить...

  • @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();
    Спасибо автору за урок .

  • @andranikgrigoryan6765
    @andranikgrigoryan6765 2 года назад

  • @mariashabalina6299
    @mariashabalina6299 2 года назад

    Подскажите, пожалуйста, насчет всех видов тестирования. Нужно ли в одном проекте использовать юнит-тестирование, интеграционное и end2end тестирование? Или ты выбираешь какой вариант тебе ближе и тот постоянно используешь?

    • @mishanep
      @mishanep  2 года назад

      Зависит от требований заказчика. Потому как он и оплачивает время на создание тестов. Это дорого. Юнит тесты - самые дешевые, end2end - самые дорогие. В идеале, чтобы были все виды тестов.

  • @АндрійСеменченко-е7з

    АААААААА белая тема в вскоде 😲😲😲😲

  • @storozhukua
    @storozhukua 2 года назад

    Дякую.

  • @koshgosh3081
    @koshgosh3081 Год назад

    возможно прослушал, а что означает значает / / эти штуки и значек i после них?

    • @mishanep
      @mishanep  Год назад

      Это синтаксис регулярных выражений в JS. Символ i означает регистронезависимый, т.е. одинаково для больших и малых букв.

  • @kirillzarya5229
    @kirillzarya5229 2 года назад

    Подскажите , как эти тесты работают если в приложении задействован redux?

    • @mishanep
      @mishanep  2 года назад

      Да нормально работают. Просто надо учитывать особенности редакса и имитировать стор с провайдером вокруг компонента.

  • @Giri-16108
    @Giri-16108 3 года назад

    Еще интересно как работать с редаксом в тестах. И скажите, пожалуйста. Зачем нужны такие простые тесты, если я во время разработки сам вижу, что выводится на страницу, а что нет?

    • @mishanep
      @mishanep  3 года назад +8

      Разработка - штука итеративная. Когда вносишь доработки или делаешь рефакторинг, не сложно что то сломать. Удержать в голове все нюансы функционала каждого компонента и их взаимодействия не так то просто, а тесты снимают этот вопрос. Одной командой мы узнаем, если что-то пошло не так. Ну и TDD - это когда мы сначала описываем тест-кейсы, того как должен вести себя компонент, а потом только берёмся за реализацию. Если не говорить про стили, то базовый функционал можно закрыть, даже не запуская сборку.

  • @leoibra6296
    @leoibra6296 2 года назад

    использую в своем проекте, но получаю ошибку на использование jest.fn(). пишет что jest is not defined. установил отдельный пакет jest globals, получил следующую ошибку Do not import `@jest/globals` outside of the Jest test environment. как можно решить данную проблему?

    • @mishanep
      @mishanep  2 года назад

      Вероятно у вас используется другой вариант сборки и вам нужно ручками настроить setupTests.js

    • @leoibra6296
      @leoibra6296 2 года назад

      @@mishanep оказалось что проблема в настройках проекта, создав новый проект с базовыми настройками проверил все и работает как нужно) еще такой вопрос, у меня в компоненте есть элемент при наведении на которого (onMouseEnter) срабатывает функция, как можно протестировать этот момент?

  • @Pink_Piglin
    @Pink_Piglin Год назад

    Планируете записывать видео курс Jest Enzyme? На всем ютубе инфа размазана, приходится часами слушать неструктурированные, местами не понятные обучающие видеоролики. То-то дело Ваши!
    Я бы и на платной платформе купил ваш курс по этой теме, но нету, все полноценные курсы на английском только!

    • @mishanep
      @mishanep  Год назад

      С Enzyme уже несколько лет не работал. Не знаю как там библиотека развивается. Вообще курс по тестированию рассматривается мною как один из возможных в качестве следующего проекта. Но не могу ничего обещать.

  • @mkonin
    @mkonin 2 года назад

    Ну все, после этого видоса я точно готов жениться )

  • @iGotton
    @iGotton 3 года назад

    +

  • @lavanda_funny
    @lavanda_funny Год назад

    Добрые люди,подскажите начинающему AQA js где этот шаблон взять? Установила @testing-lib.../react и jest-dom но никаких файлов кроме node-modules и .json нету(((