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

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

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

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

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

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

I у Бабеля-шутку. Я пробовал различные предложения из вопросов github. Не заходи так далеко.

пакета.в 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"]
}

есть ли фикс для этого?

4 ответов


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

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

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


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


Шаг 1:

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

{
  "env": {
    "test": {
      "plugins": ["transform-es2015-modules-commonjs"]
    }
  }
}

Шаг 2:

установите преобразование es2015 плагин:

npm install --save-dev babel-plugin-transform-es2015-modules-commonjs

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


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


Я решил с .default.

попробовать var Validation = require('../src/components/validation/validation').default;