TypeError: невозможно прочитать свойство PlatformLocalStorage из undefined

Я запускаю шутливый тест на react-native и получаю следующие ошибки

Не удалось запустить набор тестов

TypeError: Cannot read property 'PlatformLocalStorage' of undefined

  2 | import thunk from 'redux-thunk';
  3 | import { persistStore, persistReducer } from 'redux-persist';
> 4 | import AsyncStorage from '@react-native-community/async-storage';
    | ^
  5 | 
"dependencies":{
    "react": "16.8.3",
    "react-native": "0.59.9",
},
"devDependencies": {
  "jest": "^24.1.0",
  "enzyme": "^3.9.0",
    "enzyme-adapter-react-16": "^1.10.0",
},

  "jest": {
    "setupFilesAfterEnv": [
      "<rootDir>/__tests__/setup/test-setup.js"
    ],
    "setupFiles": [
      "<rootDir>/__tests__/setup/test-setup.js"
    ],
    "transformIgnorePatterns": [
      "/node_modules(?![\\/]rn-fetch-blob[\\/]|[\\/]react-native[\\/]|[\\/]react-native-config[\\/]|[\\/]react-native-navigation[\\/]|[\\/]react-native-status-bar-height[\\/]|[\\/]react-native-animatable[\\/]|[\\/]react-native-restart[\\/]|[\\/]react-native-linear-gradient[\\/]|[\\/]react-native-i18n[\\/]|[\\/]react-native-modal[\\/]|[\\/]react-native-smooth-pincode-input[\\/]|[\\/]react-native-swipe-gestures[\\/]|[\\/]react-native-root-toast[\\/]|[\\/]react-native-root-siblings[\\/]|[\\/]static-container[\\/]|[\\/]react-native-elements[\\/]|[\\/]react-native-ratings[\\/]|[\\/]react-native-progress[\\/]|[\\/]react-native-dialog[\\/]|[\\/]react-native-pdf[\\/]|[\\/]react-native-webview[\\/]|[\\/]react-native-check-box[\\/]|[\\/]react-native-share[\\/]|[\\/]react-native-haptic-feedback[\\/]|[\\/]react-native-responsive-screen[\\/]|[\\/]react-native-keyboard-aware-scroll-view[\\/]|[\\/]he[\\/]|[\\/]react-native-iphone-x-helper[\\/]|[\\/]check-prop-types[\\/]|[\\/]react-native-image-progress[\\/]|[\\/]react-native-theming[\\/]|[\\/]@react-native-community/async-storage[\\/])/"
    ],
    "testPathIgnorePatterns": [
      "<rootDir>/(build|docs|node_modules)/",
      "<rootDir>/__tests__/setup"
    ],
    "preset": "react-native"
  },
  "rnpm": {
    "assets": [
      "fonts"
    ]
  }
}

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

2 ответа

Смокните библиотеку AsyncStorage. Если вы, как и я, портировали сreact-native вариант к react-native-community один, который вам может потребоваться обновить ваши mocks (если они у вас уже были).

jest.mock("@react-native-community/async-storage", () => {
   // a map/dict/kvs of types to return - the leaves of the def
   // are jest functions
   const apiMock = {
    getItem: jest.fn(() => {  // mock's AsyncStorage.getItem()
      return JSON.stringify("some mock data");
    }),
   };
   return apiMock;
 });

Решение состоит в том, чтобы смоделировать Package.

  1. В корневом каталоге вашего проекта создайте __mocks__/@react-native-async-storage directory.
  2. Внутри этой папки создайте async-storage.js файл.
  3. Внутри этого файла экспортируйте макет Async Storage.
      export default from '@react-native-async-storage/async-storage/jest/async-storage-mock'

Полная инструкция находится здесь https://react-native-async-storage.github.io/async-storage/docs/advanced/jest

Другие вопросы по тегам