Jest обнаружил неожиданный токен - import 'обещание-polyfill / src / polyfill' прерывает тест

Мои тесты Jest ломаются, когда я добавляю это в свой код:

import 'promise-polyfill/src/polyfill';

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.

    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

Мой package.json:

{
  "name": "fas-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "ajv": "^6.5.3",
    "babel": "^6.23.0",
    "babel-polyfill": "^6.26.0",
    "connected-react-router": "^4.4.1",
    "formik": "^1.1.1",
    "hello.js": "^1.0.0",
    "hellojs": "^2.0.0-4",
    "history": "^4.7.2",
    "immutability-helper": "^2.8.0",
    "loadjs": "^3.5.4",
    "moment": "^2.22.2",
    "promise-polyfill": "8.1.0",
    "react": "^16.4.2",
    "react-bs-notifier": "^5.0.0",
    "react-datepicker": "^1.6.0",
    "react-dom": "^16.4.2",
    "react-facebook-login": "^4.0.1",
    "react-ga": "^2.5.6",
    "react-google-oauth": "^1.0.0",
    "react-redux": "^5.0.7",
    "react-router": "^4.3.1",
    "react-router-dom": "^4.3.1",
    "react-scripts": "^2.1.1",
    "react-tooltip": "^3.9.0",
    "recharts": "^1.3.0",
    "redux": "^4.0.0",
    "redux-thunk": "^2.3.0",
    "whatwg-fetch": "^3.0.0",
    "yup": "^0.26.6"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "devDependencies": {
    "jest": "^23.6.0"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}

Я попытался установить конфигурацию, описанную здесь:

https://jestjs.io/docs/en/configuration.html#modulenamemapper-object-string-string

Я не могу понять, в какой файл его добавить или как это настроить. Все, что делает этот полифилл, - это поддержка IE, поэтому мне он не нужен (или я могу имитировать его) для Jest, я просто не могу понять, как заставить Jest имитировать это для тестов.

Как мне это сделать?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
412
1

Ответы 1

Похоже, вы создаете приложение React-Redux и используете его только с Enzyme, чтобы проверить это.

Если вы создаете одностраничное приложение, лучше всего иметь страницу индекса, которая настраивает среду и отображает компонент вашего приложения.

Если вы настроите здесь свою среду (например, обещание-polyfill), вы можете гарантировать, что она будет присутствовать в остальной части вашего проекта.

Вы также визуализируете приложение примерно так:

ReactDOM.Render(App/>, document.getElementById('root'))

Однако часть процесса, связанная с индексом, не следует регулярно тестировать. Во-первых, вам нужно будет добавить в jsdom элемент с идентификатором root.

Вместо этого вам следует тестировать сам компонент приложения, который не должен импортировать индексную страницу.

Другие вопросы по теме