Jest с React Native получает проблему

Я получаю сообщение об ошибке при попытке запустить код тестовых случаев. Я использую react native с jest . все работало нормально до обновления 0.40. теперь 0,42, все мои тестовые примеры перестают работать и получают ошибку за ошибкой.

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

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

вот мой код .babelrc

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

в чем проблема я не получаю .


person Sport    schedule 31.03.2017    source источник
comment
Какую версию Node вы используете? node -v в терминале поможет.   -  person Dan    schedule 31.03.2017
comment
v6.9.5 почему это связано с узлом   -  person Sport    schedule 31.03.2017


Ответы (2)


Я столкнулся с той же проблемой с 0.42. Я ломал голову, пока не нашел решение по частям.

Вам нужно написать игнорирование в package.json. Пример мой:

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

И мой /config/jest.js выглядит так:

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()
}));

Я не гарантирую, что это решит все ваши проблемы напрямую. Однако идея состоит в том, чтобы игнорировать всех «злоумышленников» (в вашем случае react-native-root-siblings), избегая таким образом таких сообщений об ошибках.

person Samuli Hakoniemi    schedule 31.03.2017

у меня есть решение

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

и в моих devDependencies я добавил "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"
}

это решило все проблемы.

person Sport    schedule 04.04.2017