Основная причина написания этого блога заключается в том, что я столкнулся с множеством ошибок при настройке среды тестирования в моем проекте React. Это проще, если вы используете CRA, но если проект настроен с использованием Webpack, это может вызвать у вас головную боль. Я не хочу, чтобы мои коллеги-разработчики столкнулись с той же проблемой.

Примечание. Эта статья не предназначена для настройки Webpack, Jest или Enzyme с нуля. Для этого я поделюсь ссылками на отличные статьи других людей. Это просто поможет разработчикам исправить ошибку, с которой они могут столкнуться при этом.

По сути, я столкнулся с двумя ошибками, на устранение которых потребовалось много времени:

  1. Jest обнаружил неожиданный токен
Jest encountered an unexpected token

    This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

    By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

    Here's what you can do:
     • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
     • If you need a custom transformation specify a "transform" option in your config.
     • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.     

    You'll find more details and examples of these config options in the docs:
    https://jestjs.io/docs/en/configuration.html

Эта ошибка появилась, как только я запустил тесты с помощью Jest.

После долгой отладки я понял, что моя конфигурация в .babelrc была неправильной. То, что мне не хватало, было «preset-env». Для этого я установил @ babel / preset-env.

npm i -D @babel/preset-env

Затем я обновил файл .babelrc как:

{ 
  "presets": ["@babel/react", "@babel/env"]
}

Благодаря этому я смог успешно запустить тесты, используя:

npm run test

PS: Я уже модифицировал ключ «скриптов» под то же самое.

2. Время выполнения регенератора не определено

Это была вторая ошибка, с которой я столкнулся. Итак, мои тесты к настоящему времени работали нормально, но мое приложение начало ломаться. Как только я нажал на URL-адрес, я получил указанную выше ошибку.

Опять же, после долгой отладки и поиска в Google я узнал, что мне нужен был @ babel / polyfill.

Для установки просто запустите:

npm install --save @babel/polyfill

Да, это не зависимость от разработчика, это полифил.

После установки просто добавьте его в "entry" в webpack.config.js как:

entry: ['@babel/polyfill', './src/js/index.js'],

И это все. Благодаря этому, мое приложение и тесты теперь работают довольно гладко. Сообщите мне, смогли ли вы исправить и эти ошибки, если вы столкнулись с ними или столкнулись с новыми.

Ресурсы: