Если вас интересуют подходы к тестированию, прочтите эту статью.

Настраивать:

1. Конфигурация Jest

Я удалил свойства, не относящиеся к react-native (например, testMatch, testUrl и т. д.)

Также это может быть jest.config.js (зависит от организации вашего проекта)

2. Mocking store.

Я использовал redux-mock-store.

  1. Для уменьшения повторяющегося кода Я положил его в __mocks__.

В качестве примера промежуточного программного обеспечения есть thunk. Вы можете использовать любой.

2. Я создал отдельную функцию компонента рендеринга.

3. И просто используйте:

3. Добавьте более читаемый ожидаемый метод «toBeFound».

  1. Создайте скрипт config / jest / expect.js
  2. Добавьте его в setupFiles в конфигурации jest.

Решение проблем:

1. ES6 в node_modules

Ошибка при использовании библиотек es6 + из node_modules, например:

/Users/dsitdikov/Projects/experimentx-dx-app/node_modules/react-native/jest/mockComponent.js:20 static displayName = ‘Component’; ^ SyntaxError: неожиданный токен =

Решение:

Используйте transformIgnorePatterns в конфигурации jest:

По умолчанию jest transformIgnorePatterns имеет ‹rootDir› / node_modules и игнорирует все node_modules. Таким образом, он преобразует каждый файл из es6 + в понятный es5, кроме node_modules. Некоторых модулей нет в es6, и мы должны сказать игнорировать все node_modules, кроме react-navigation, react-native, rn-apple-healthkit и т. Д.

Об этом также можно прочитать в документации по шутке.

2. Модули работают не в шутку.

Что-то типа:

Ошибка типа: невозможно прочитать свойство «RNFSFileTypeRegular» из неопределенного
›4 | импортировать RNFS из response-native-fs;

Решение:

Ничего страшного. Просто:

  1. Создайте в своем проекте mocks.js
  2. Добавьте setupFiles в конфигурацию jest.

3. Для каждого ненужного и неработающего модуля напишите следующее:

3. Ошибка при использовании фиктивных экспортированных модулей по умолчанию.

Ошибка могла быть такой:

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

Решение:

Просто добавьте это в свой файл mocks.

Если этот пост был полезен, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить свою поддержку! ⬇⬇