Выбор ответа Middle Тестирование спрашивают часто обновлено
Jest и нативные модули
Вопрос
Тест компонента падает с ошибкой о том, что нативный модуль не найден. Почему и что делать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В Jest нет нативной части: модуль нужно замокать. Jest выполняет JS в Node.js, нативного кода там нет.
Варианты ответа
- Тест нужно запускать на устройстве, а не в Node.js
- Перед тестами нужно пересобрать нативное приложение
- В Jest нужно включить новую архитектуру, тогда модули найдутся
- В Jest нет нативной части: модуль нужно замокатьправильный ответ
Разбор
Jest выполняет JS в Node.js, нативного кода там нет. Многие библиотеки поставляют свои моки (например, AsyncStorage, Reanimated), для остального пишут jest.mock('модуль', () => ({...})) в файле настройки. Лучше всего спрятать нативный API за своим сервисом и подменять его фейком. Устройство и сборка для unit-тестов не нужны.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.