Подтвердить что ты не робот

Поддерживает ли Jest импорт/экспорт ES6?

Если я использую import/export из ES6, то все мои тесты jest с ошибкой терпят неудачу:

Неожиданное зарезервированное слово

Я конвертирую свой объект под тест, чтобы использовать синтаксис старой школы IIFY, и внезапно мои тесты проходят. Или возьмите еще более простой тестовый пример:

   var Validation = require('../src/components/validation/validation');//PASS
   //import * as Validation from '../src/components/validation/validation'//FAIL

Те же ошибки. Очевидно, что здесь проблема с импортом/экспортом. Для меня нецелесообразно переписывать мой код с использованием синтаксиса ES5, чтобы сделать мою тестовую структуру счастливой.

У меня есть шутка. Я пробовал различные рекомендации из проблем github. Пока не заходите.

package.json

 "scripts": {
    "start": "webpack-dev-server",
    "test": "jest"
  },
      "jest": {
        "testPathDirs": [
          "__tests__"
        ],
        "testPathIgnorePatterns": [
          "/node_modules/"
        ],
        "testFileExtensions": ["es6", "js"],
        "moduleFileExtensions": ["js", "json", "es6"]
      },

babelrc

{
  "presets": ["es2015", "react"],
  "plugins": ["transform-decorators-legacy"]
}

Есть ли исправление для этого?

4b9b3361

Ответ 1

Из моего ответа на другой вопрос это может быть проще:


Единственное требование - настроить среду test на Babel и добавить плагин преобразования es2015:


Шаг 1:

Добавьте свою среду test в .babelrc в корне вашего проекта:

{
  "env": {
    "test": {
      "plugins": ["@babel/plugin-transform-modules-commonjs"]
    }
  }
}

Шаг 2:

Установите модуль преобразования es2015:

npm install --save-dev @babel/plugin-transform-modules-commonjs

И это все. Jest включит компиляцию из модулей ES в CommonJS автоматически, без необходимости сообщать дополнительные параметры вашему свойству jest внутри package.json.

Ответ 2

Это вопрос добавления stage-0 в ваш .babelrc файл. вот пример:

{
  "presets": ["es2015", "react", "stage-0"],
  "plugins": ["transform-decorators-legacy"]
}

Ответ 3

В дополнение к установке babel-jest (который по умолчанию содержит шутки), обязательно установите regenerator-runtime.

Ответ 4

Я решил это с помощью .default.

Try var Validation = require('../src/components/validation/validation').default;