Jest: тестовый набор не был запущен (для запуска Экспо SDK требуется Экспо) - PullRequest
1 голос
/ 02 мая 2019

Мне очень трудно настроить Jest для работы с моим выставочным проектом RN (поэтому я могу поиграть и изучить его).

 FAIL  screens/HomeScreen.test.js
  ● Test suite failed to run

    The Expo SDK requires Expo to run. It appears the native Expo modules are unavailable and this code is not running on Expo. Visit https://docs.expo.io to learn more about developing an Expo project.

      at Object.<anonymous> (node_modules/expo/src/environment/validate.ts:11:9)
      at Object.require (node_modules/expo/build/Expo.js:278:1)

 FAIL  __tests__/App-test.js
  ● Test suite failed to run

    The Expo SDK requires Expo to run. It appears the native Expo modules are unavailable and this code is not running on Expo. Visit https://docs.expo.io to learn more about developing an Expo project.

      at Object.<anonymous> (node_modules/expo/src/environment/validate.ts:11:9)
      at Object.require (node_modules/expo/build/Expo.js:278:1)

 PASS  components/__tests__/StyledText-test.js (7.769s)

Test Suites: 2 failed, 1 passed, 3 total
Tests:       1 passed, 1 total
Snapshots:   1 passed, 1 total
Time:        10.477s
Ran all test suites.

package.json

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "eject": "expo eject",
    "test": "jest --watchAll"
  },
  "jest": {
    "preset": "react-native",
    "transformIgnorePatterns": [
      "node_modules/(?!((jest-)?react-native|react-clone-referenced-element|expo(nent)?|@expo(nent)?/.*|react-navigation|sentry-expo))"
    ]
  },
  "dependencies": {
    "@expo/samples": "2.1.1",
    "expo": "^32.0.0",
    "react": "16.5.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",
    "react-navigation": "^3.0.9"
  },
  "devDependencies": {
    "babel-preset-expo": "^5.0.0",
    "jest": "^24.7.1",
    "react-test-renderer": "^16.8.6"
  },
  "private": true
}

.babelrc

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

1 Ответ

1 голос
/ 02 мая 2019

Я думаю, что ваша ошибка в ключе jest в файле package.json, и ваша предустановка конфигурации Babel также неверна.

Сначала добавьте "jest-expo": "^32.0.0" к вашему devDependencies (так как выиспользуя SDK 32), тогда вы должны изменить свою шутливую клавишу в package.json на:

"jest": {
    "preset": "jest-expo",
}

Либо измените предустановленную клавишу .babelrc на: presets: ['babel-preset-expo'].Или удалите его и создайте файл babel.config.js (рекомендуется) со следующим содержимым:

module.exports = api => {
  api.cache(true);
  return {
    presets: ['babel-preset-expo'],
  };
};

Если это все еще не работает, посмотрите проект jest-expo , он должен указатьВы в правильном направлении.Или оставьте комментарий, и я отредактирую ответ, чтобы помочь вам.

...