web-dev-qa-db-fra.com

Est-ce que Jest prend en charge l'importation/exportation ES6?

Si j'utilise import/export depuis ES6, tous mes tests de plaisanterie échouent avec l'erreur:

Mot réservé inattendu

Je convertis mon objet sous test pour qu'il utilise la syntaxe ancienne école IIFY et, tout à coup, mes tests réussissent. Ou encore, prenons un cas de test encore plus simple:

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

Même erreur. De toute évidence, il y a un problème d'importation/exportation ici. Il n'est pas pratique pour moi de réécrire mon code en utilisant la syntaxe ES5 uniquement pour rendre mon framework de test heureux.

J'ai babel-jest. J'ai essayé diverses suggestions des problèmes de github. Non, pas aller si loin.

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"]
}

Y at-il un correctif pour cela?

15
P.Brian.Mackey

Il suffit d'ajouter l'étape 0 à votre fichier .babelrc. Voici un exemple:

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

De ma réponse sur une autre question, cela peut être plus simple:


La seule exigence est de configurer votre environnement test avec Babel et d'ajouter le plug-in es2015 transform:


Étape 1:

Ajoutez votre environnement test à .babelrc à la racine de votre projet:

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

Étape 2:

Installez le plugin de transformation es2015:

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

Et c'est tout. Jest activera automatiquement la compilation de modules ES vers CommonJS, sans avoir à renseigner les options supplémentaires de votre propriété jest à l'intérieur de package.json.

6
Paulo Coghi

En plus d'installer babel-jest (qui est livré avec jest par défaut maintenant), veillez à installer regenerator-runtime.

0
Adam Tuttle