Используйте jest для написания тестов с потоком - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь протестировать модуль React Native, который я создал с помощью jest.В настоящее время у меня есть тестовый файл, который запускается при выполнении jest, он выглядит следующим образом:

import 'react-native';
import React from 'react';
import App from '../App';
import {MySDK} from 'react-native-mysdk’


it(‘test1’, () => {
  MySDK.API();
});

Когда я запускаю jest, я получаю

      API(): Promise<string> {
                        ^

    SyntaxError: Unexpected token :

Мой babel.config.js выглядит так:

module.exports = {
  presets: ["module:metro-react-native-babel-preset"]
}

А мой package.json выглядит так:

  "dependencies": {
    "@babel/runtime": "^7.0.0",
    "babel-cli": "^6.26.0",
    "babel-eslint": "^8.2.2",
    "babel-plugin-module-resolver": "^3.1.3",
    "babel-preset-flow": "^6.23.0",
    "babel-preset-react-native": "2.1.0",
    "flow-typed": "^2.3.0",
    "flow-bin": "^0.92.0",
    "react": "16.6.3",
    "react-native": "0.58.3”,
   “react-native-mysdk”: “0.0.1”
  },
  "devDependencies": {
    "babel-jest": "16.0.0",
    "babel-preset-react-native": "1.9.0",
    "jest": "16.0.2",
    "jest-react-native": "16.0.0",
    "react-test-renderer": "15.3.2"
  },
  "jest": {
    "preset": "react-native"
  }

Я пытался обновить файл babel с помощью:

module.exports = {
  presets: ["module:metro-react-native-babel-preset", "@babel/preset-flow"],
  plugins: ["@babel/plugin-transform-flow-strip-types"]
}

но я получаю ту же ошибку.

Как я могу использовать jest с файлами javascript, которые используют jest?

1 Ответ

0 голосов
/ 18 мая 2019

Вам понадобится плагин @babel/plugin-transform-flow-strip-types для удаления типов потока при запуске тестов. Установите его и добавьте в свой конфигурационный файл babel как элемент массива плагинов. В качестве альтернативы вы можете использовать @babel/preset-flow, который уже содержит необходимый плагин.

См .: https://babeljs.io/docs/en/babel-preset-flow

Пример настройки

Вам необходимо установить следующие пакеты:

npm i --save jest module:metro-react-native-babel-preset babel-jest @babel/preset-env @babel/core @babel/preset-flow

Ваш package.json конфиг для jest должен быть:

"jest": {
  "transform": {
    "^.+\\.jsx?$": "babel-jest"
  }
}

Ваш babel.config.js должен быть:

module.exports = {
  "presets": [
    [
      "@babel/preset-env",
      {
        targets: {
          node: 'current',
        }
      },
    ],
    "module:metro-react-native-babel-preset",
    "@babel/preset-flow"
  ],
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...