Если вас интересуют подходы к тестированию, прочтите эту статью.
Настраивать:
1. Конфигурация Jest
Я удалил свойства, не относящиеся к react-native (например, testMatch, testUrl и т. д.)
Также это может быть jest.config.js (зависит от организации вашего проекта)
2. Mocking store.
Я использовал redux-mock-store.
- Для уменьшения повторяющегося кода Я положил его в __mocks__.
В качестве примера промежуточного программного обеспечения есть thunk. Вы можете использовать любой.
2. Я создал отдельную функцию компонента рендеринга.
3. И просто используйте:
3. Добавьте более читаемый ожидаемый метод «toBeFound».
- Создайте скрипт config / jest / expect.js
- Добавьте его в 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;
Решение:
Ничего страшного. Просто:
- Создайте в своем проекте mocks.js
- Добавьте setupFiles в конфигурацию jest.
3. Для каждого ненужного и неработающего модуля напишите следующее:
3. Ошибка при использовании фиктивных экспортированных модулей по умолчанию.
Ошибка могла быть такой:
TypeError: невозможно прочитать свойство dirs of undefined
Решение:
Просто добавьте это в свой файл mocks.
Если этот пост был полезен, нажмите несколько раз кнопку хлопка 👏 ниже, чтобы выразить свою поддержку! ⬇⬇