6 votes

S'amuser avec React Native rencontre un problème

Je reçois une erreur lors de la tentative d'exécution des cas de test code.i am using react native with jest. Tout fonctionnait bien avant la mise à niveau vers 0.40. Maintenant, avec la version 0.42, tous mes cas de test cessent de fonctionner et je reçois l'erreur suivante.

({"Object.":function(module,exports,require,__dirname,__filename,global,jest){import React, { Component, Children, PropTypes } from 'react';
                                                                                             ^^^^^^
    SyntaxError: jeton inattendu import

      à transformAndBuildScript (node_modules/jest-runtime/build/transform.js:320:12)
      à Object. (node_modules/react-native-root-siblings/lib/AppRegistryInjection.js:3:22)
      à Object. (node_modules/react-native-root-siblings/lib/SiblingsManager.js:3:27)

Voici mon code .babelrc

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

Je ne comprends pas quel est le problème.

3voto

zvona Points 4154

J'ai rencontré exactement le même problème avec 0.42. J'ai cogné la tête jusqu'à ce que je trouve une solution morceau par morceau.

Il faut écrire des ignores dans package.json. Exemple du mien :

"jest": {
        "preset": "react-native",
        "setupFiles": [
            "/src/config/jest.js"
        ],
        "transformIgnorePatterns": [
            "/(node_modules)/(?!react-native|react-navigation|bugsnag-react-native)"
        ],
        "transform": {
            "^.+\\.js$": "/node_modules/babel-jest"
        }

Et mon /config/jest.js ressemble à ceci :

jest.mock('Linking', () => ({
  addEventListener: jest.fn(),
  removeEventListener: jest.fn(),
  openURL: jest.fn(),
  canOpenURL: jest.fn(),
  getInitialURL: jest.fn().mockImplementation(() => new Promise((resolve) => resolve()))
}));

jest.mock('mobx-react/native', () => require('mobx-react/custom'));
jest.mock('react-native-mixpanel', () => ({
  sharedInstanceWithToken: jest.fn(),
  trackWithProperties: jest.fn()
}));
jest.mock('bugsnag-react-native', () => ({
  Client: jest.fn(),
  Configuration: jest.fn()
}));

Je ne peux pas garantir que cela résoudra tous vos problèmes directement. Cependant, l'idée est d'ignorer tous les "malfaiteurs" (react-native-root-siblings dans votre cas), évitant ainsi de tels messages d'erreur.

2voto

Sport Points 4131

J'ai trouvé la solution

"jest": {
        "preset": "react-native",
        "transformIgnorePatterns": [
          "node_modules"
        ],
        "coveragePathIgnorePatterns": [
          "node_modules"
        ],
        "modulePathIgnorePatterns": [
          "node_modules"
        ]
      },

et dans mes devDependencies j'ai ajouté "react-addons-test-utils", "react-dom" ,

"devDependencies": {
    "babel-core": "^6.17.0",
    "babel-eslint": "^7.2.1",
    "babel-jest": "^19.0.0",
    "babel-loader": "^6.2.5",
    "babel-plugin-transform-decorators": "^6.13.0",
    "babel-plugin-transform-decorators-legacy": "^1.3.4",
    "babel-preset-es2017": "^6.16.0",
    "babel-preset-react": "^6.16.0",
    "babel-preset-react-native": "^1.9.1",
    "babel-preset-stage-0": "^6.16.0",
    "enzyme": "^2.8.0",
    "jest": "^19.0.2",
    "npm": "^4.4.4",
    "react-addons-test-utils": "^15.4.2",
    "react-dom": "^15.4.2",
    "react-test-renderer": "^15.4.2"
}

cela a résolu tous les problèmes .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X