Дразнящая реакция-native-async-storage на Jest - PullRequest
3 голосов
/ 21 мая 2019

Я тестирую функции, которые зависят от @react-native-community/async-storage, поэтому, очевидно, мои тесты должны проверять эту библиотеку.

И поэтому я делаю это внутри моего jestSetupFile.js:

import mockAsyncStorage from '@react-native-community/async-storage/jest/async-storage-mock';
jest.mock('@react-native-community/async-storage', () => mockAsyncStorage);

Что является прямым указанием от https://github.com/react-native-community/react-native-async-storage/blob/master/docs/Jest-integration.md

Однако экспортируемый файл содержит type ключевых слов, которые моя среда JavaScript не может проанализировать:

  ● Test suite failed to run

    /Users/someuser/myprojects/myproject/node_modules/@react-native-community/async-storage/jest/async-storage-mock.js:6
    type KeysType = Array<string>;
         ^^^^^^^^

    SyntaxError: Unexpected identifier

Конечно, когда я проверяю файл async-storage-mock.js по этому пути, он содержит ключевые слова type, которые, как я считаю, являются основной причиной этой проблемы.

Что я здесь не так делаю?

1 Ответ

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

Моим решением было переключиться на mock-async-storage

Мой jestSetupFile.js:

import MockAsyncStorage from 'mock-async-storage';
const mockImpl = new MockAsyncStorage()
jest.mock('@react-native-community/async-storage', () => mockImpl);

^^ Вышеприведенный макет-код не работал, когда он выполнялся в самом начале моих тестовых сценариев, хотя мой другой макет-код обычно работает там. Это сработало только при добавлении в jestSetupFile.js, который я определил в package.json:

"jest:"  {
   "setupFiles": [
      "./jestSetupFile.js"
    ]
}
...