Jest Test Fail в React Native - PullRequest
       10

Jest Test Fail в React Native

0 голосов
/ 12 января 2019

Я очень плохо знаком с React Native, разработкой мобильных приложений и целым стеком технологий, поэтому предположим, что я мог сделать даже самые элементарные вещи неправильно. Я пытаюсь настроить простое приложение React Native, но не могу выполнить тест для успешного выполнения.

Шаги для воспроизведения:

  1. Запустить реактивную нативную инициацию MyAwesomeApp
  2. Приложение по умолчанию успешно запускается в эмуляторе с использованием response-native run-android
  3. Создать __tests__ папку
  4. Добавить базовый тест myfirst.test.js в папку
const counter = (a) => a + 1;

describe('counter: Should increment the passed value', () => {
  expect(counter(1)).toBe(2);
});
  1. Выполнить тесты с npm test.

Выход:

> trytest@0.0.1 test /home/xxxxx/MyAwesomeApp
> jest

 FAIL  __tests__/myfirst.test.js
  * Test suite failed to run

    Couldn't find preset "module:metro-react-native-babel-preset" relative to directory "/home/xxxxx/MyAwesomeApp"

      at node_modules/babel-core/lib/transformation/file/options/option-manager.js:293:19
          at Array.map (<anonymous>)
      at OptionManager.resolvePresets (node_modules/babel-core/lib/transformation/file/options/option-manager.js:275:20)
      at OptionManager.mergePresets (node_modules/babel-core/lib/transformation/file/options/option-manager.js:264:10)
      at OptionManager.mergeOptions (node_modules/babel-core/lib/transformation/file/options/option-manager.js:249:14)
      at OptionManager.init (node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)
      at File.initOptions (node_modules/babel-core/lib/transformation/file/index.js:212:65)
      at new File (node_modules/babel-core/lib/transformation/file/index.js:135:24)
      at Pipeline.transform (node_modules/babel-core/lib/transformation/pipeline.js:46:16)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        0.161s
Ran all test suites.
npm ERR! Test failed.  See above for more details.
  1. После многих поисков в Google, я попробовал одну вещь, которая, по-видимому, исправила эту конкретную ошибку, - изменить содержимое .babelrc с "presets": ["module:metro-react-native-babel-preset"] на "presets": ["react-native"]. Ошибка, которую я сейчас вижу при выполнении тестов:
> trytest@0.0.1 test /home/xxxxx/MyAwesomeApp
> jest

 FAIL  __tests__/myfirst.test.js
  * Test suite failed to run

    Cannot find module 'AccessibilityInfo' (While processing preset: "/home/xxxxx/MyAwesomeApp/node_modules/react-native/Libraries/react-native/react-native-implementation.js")

      at Object.get AccessibilityInfo [as AccessibilityInfo] (node_modules/react-native/Libraries/react-native/react-native-implementation.js:22:12)
      at node_modules/lodash/_baseClone.js:163:23
      at arrayEach (node_modules/lodash/_arrayEach.js:15:9)
      at baseClone (node_modules/lodash/_baseClone.js:160:3)
      at cloneDeepWith (node_modules/lodash/cloneDeepWith.js:37:10)
      at OptionManager.mergeOptions (node_modules/babel-core/lib/transformation/file/options/option-manager.js:206:44)

Test Suites: 1 failed, 1 total
Tests:       0 total
Snapshots:   0 total
Time:        0.169s
Ran all test suites.
npm ERR! Test failed.  See above for more details.

Ответы [ 2 ]

0 голосов
/ 18 июля 2019

Вам следует проверить версию Jest в Package.json и обновить при необходимости

0 голосов
/ 21 января 2019

Для того, чтобы заставить это работать для реакции-нативной версии 0.57.8, я сделал: После изменения .babelrc на:

{ 
  "presets": ["react-native"]
}

Похоже, вам нужно установить babel-preset-react-native. Так: yarn add babel-preset-react-native или npm install babel-preset-react-native.

К сожалению, у нас начались проблемы со сборкой, когда мы внесли это изменение. Я предполагаю, что есть лучший способ решить проблему.

Затем я посмотрел на этот поток и обнаружил, что это работает для меня (без изменения файла .babelrc).

"jest": {
    "preset": "react-native",
    "transform": {
      "^.+\\.(js)$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
    }
  }
...