Jest: L'importation de test d'instantané ne fonctionne pas avec babel-preset

Créé le 15 août 2016  ·  3Commentaires  ·  Source: facebook/jest

J'essaie un simple test d'instantané. Le composant que je teste utilise un autre composant d'un module. Le test échoue en essayant d'importer ce module non simulé avec :

Échec

Using Jest CLI v14.1.0, jasmine2, babel-jest, jest-react-native preset
 FAIL  js/app/SetupView/__tests__/SetupView-test.js (0s)
 Runtime Error
  - SyntaxError: Unexpected reserved word
        at transformAndBuildScript (../../../../../usr/local/lib/node_modules/jest-cli/node_modules/jest-runtime/build/transform.js:306:10)
        at Object.<anonymous> (js/app/SetupView/index.js:12:17)
        at Object.<anonymous> (js/app/SetupView/__tests__/SetupView-test.js:11:12)
1 test suite failed, 0 tests passed (0 total in 1 test suite, run time 2.419s)

Test

'use strict';
import 'react-native';
import React from 'react';

import SetupView from '../index';

import renderer from 'react-test-renderer';

describe('SetupView', ()=> {
  it('renders correctly', ()=>{
    const tree = renderer.create(
      <SetupView/>
    ).toJSON();
    expect(tree).toMatchSnapshot();
  })
});

Composant SetupView

'use strict';

import React from 'react';
import {
  View,
  Text,
  TouchableHighlight,
  Image,
  Animated,
} from 'react-native';

import DataContainer from 'react.datacontainer'; //<---fails here
import DashboardSettings from './DashboardSettings';
.
.
.

package.json

"jest": {
    "globals": {
      "__DEV__": true
    },
    "collectCoverage": false,
    "verbose": true,
    "preset": "jest-react-native",
    "modulePathIgnorePatterns": [
      "node_modules/react-native/node_modules/yeoman-generator",
      "node_modules/react-native/node_modules/fbjs"
    ],
    "unmockedModulePathPatterns": [
      "react.datacontainer",
      "react.data",
      "react.base.theme",
      "react.layout"
    ]
  }

Pour info, j'ai un fichier .babelrc dans mon répertoire racine pointant vers le préréglage natif de réaction et le test s'exécute mais échoue si je commente la ligne 12 car DataContainer n'est pas défini.

Commentaire le plus utile

Pouvez-vous essayer jest --no-cache ? Si vous avez modifié votre babelrc avant la dernière invocation, nous pourrions ne pas mettre à jour le cache correctement.

Si cela ne fonctionne pas, veuillez créer un dépôt sur github que je peux installer npm et tester npm pour dépanner.

Astuce : vous n'avez pas besoin d'unmockedModulePathPatterns lorsque vous utilisez le préréglage react-native car l'automocking sera de toute façon désactivé.

Tous les 3 commentaires

Pouvez-vous essayer jest --no-cache ? Si vous avez modifié votre babelrc avant la dernière invocation, nous pourrions ne pas mettre à jour le cache correctement.

Si cela ne fonctionne pas, veuillez créer un dépôt sur github que je peux installer npm et tester npm pour dépanner.

Astuce : vous n'avez pas besoin d'unmockedModulePathPatterns lorsque vous utilisez le préréglage react-native car l'automocking sera de toute façon désactivé.

Cela n'a pas fonctionné pour moi. Il semble que le problème soit lié à l'importation du node_module react.datacontainer . Après avoir creusé un peu plus, je pense que le préréglage de plaisanterie ne compile pas les node_modules écrits dans es6.

Malheureusement, je ne peux pas créer de dépôt pour le moment. Mais si cela peut vous aider, voici à quoi ressemble le module 'react.datacontainer'. https://github.com/ForceDotComLabs/react.force.datacontainer

Vous pouvez activer le prétraitement pour ce module via cette option de configuration : http://facebook.github.io/jest/docs/tutorial-react-native.html#preprocessorignorepatterns -customization

Si vous le souhaitez, vous pouvez également créer un problème sur la page github de ce projet pour leur demander de précompiler leurs dépendances et de publier les fichiers de construction sur npm.

Cette page vous a été utile?
0 / 5 - 0 notes