babel-jest ne gère pas les ES6 dans des modules

Je suis en train de mettre en place Plaisanterie sur un Réagir en fonction du projet qui utilise ES6 modules. Cependant il me semble avoir des problèmes avec ES6 modules, je suis à l'aide de babel-jest et je crois que j'ai configuré correctement (Jest détecte automatiquement).

Plaisanterie ne semble pas avoir de problème d'utilisation de ES6 importations toutefois, dès qu'il frappe sur une instruction import dans l'un des modules importés, il étouffe. C'est comme si il n'est transpiling le test initial de script, et non sur les modules importés. J'ai essayé différentes configurations et essayé de chercher sur Google avec pas de chance. L'exécution des tests sans les importations fonctionne très bien.

Voici l'erreur:

({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import Predications from './predications';
                                                                                         ^^^^^^
SyntaxError: Unexpected token import

Voici les bits de config:

plaisanterie.conf.json

{
  "testRegex": "\/test\/spec\/.*\\.js$",
}

.babelrc

{
  "presets": ["es2015", "stage-0", "react"]
}

Script de Test

import React from 'react';
import { mount, shallow } from 'enzyme';
import Slider from 'react-slick';
import Carousel from '../../client/components/carousel/carousel.js'; //test chokes on when I include this module

describe('carousel component', () => {
  it('is a test test case', () => {
    expect(1 + 2).toEqual(3);
  });
});

Mise à jour:

Comme suggéré, j'ai essayé de lancer le test sans jest.conf.js cependant la testRegex est nécessaire à la Plaisanterie à trouver mes tests, j'ai essayé les tests de mouvement par défaut du répertoire de test et qu'ils ne parviennent toujours pas.

Je tiens à préciser que les tests eux-mêmes sont en cours d'exécution fine, la question semble être l'endroit où l'un de mes modules importés utilise ES6, dans mon exemple ci-dessus, si je n'ai pas importer mes carrousel composant le test se passe bien, dès que je l'importation que le test des bobines sur l'instruction d'importation à l'intérieur du fichier. Il semble que les modules importés ne sont pas arriver transpiled.

Mise à jour #2

Après quelques recherches, il semble que le problème est que babel n'est pas transpiling ES6 dans node_modules. J'ai créé un exemple de repo pour le démontrer ici: https://github.com/jamiedust/babel-jest-example

Je comprends que les modules tiers devrait être la manipulation de leurs propres transpiling, cependant, nous avons un certain nombre de modules qui sont hébergés sur nos propres mnp de registre et sont ré-utilisés entre les projets, dans ces cas Webpack poignées transpiling, pour la Plaisanterie tests, nous avons besoin de ces node_modules être transpiled par Babel, ou une façon de tirer parti de notre webpack mis en place pour le faire pour nous.

Solution

Ajouter la configuration suivante dans le paquet.json (ou Plaisanterie fichier de config).

"jest": {
  "transformIgnorePatterns": [
    "/node_modules/(?!test-component).+\\.js$"
  ]
}
  • Ce qui se passe lorsque vous retirez le transform partie forme la plaisanterie réglage. Ce n'est pas nécessaire dans les cas simples.
  • Je reçois la même erreur, oui votre droit, je ne semble pas en avoir besoin
  • avez-vous essayé de courir sans jest.conf.js? Il devrait fonctionner w/o configuration supplémentaire
  • Je soupçonne textRegex et/ou transform sont à l'origine de la question
  • comme vous pouvez le vérifier ici github.com/MinimalNoise/persist-lead-service, les tests passent parfaitement sur es-modules (même s'il n'jsx) sans jest de configuration
  • Je vais essayer sans le jest.conf.js plus tard, cependant, j'aurais été en clair, les tests fonctionnent bien si je ne suis pas d'importer des modules
  • Oui, mais vous ne voulez pas utiliser de CommonJS juste pour faire des tests de travail de droit? facebook.github.io/plaisanterie/docs/getting-started.html#à l'aide de la tour de babel Comme vous pouvez le voir ici, il n'y a aucune configuration supplémentaire dont vous aurez besoin. babel-polyfill est nécessaire de faire (entre autres) des générateurs de travail babeljs.io/docs/utilisation/polyfill mais pas moyen nécessaire pour ES Modules
  • comme je comprends la Plaisanterie ne nécessitent CommonJS, voir la section sur les Webpack 2 ici: facebook.github.io/plaisanterie/docs/webpack.html#contenu. Cependant mon programme d'installation doit être la compilation de commonjs modules et donc ne devrait pas être un problème. Merci pour vos suggestions, mais malheureusement ils n'ont pas aidé (voir ma mise à jour en question).
  • Toutes mes excuses pour être tranquille j'ai été assez occupé, mais je suis de prendre ceci en arrière jusqu'à maintenant. Consultez la mise à jour #2 dans ma question initiale, merci.

InformationsquelleAutor jamiedust | 2017-02-14