Выбор ответа Middle Тестирование спрашивают часто обновлено

Jest и нативные модули

Вопрос

Тест компонента падает с ошибкой о том, что нативный модуль не найден. Почему и что делать?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В Jest нет нативной части: модуль нужно замокать. Jest выполняет JS в Node.js, нативного кода там нет.

Варианты ответа

  1. Тест нужно запускать на устройстве, а не в Node.js
  2. Перед тестами нужно пересобрать нативное приложение
  3. В Jest нужно включить новую архитектуру, тогда модули найдутся
  4. В Jest нет нативной части: модуль нужно замокатьправильный ответ

Разбор

Jest выполняет JS в Node.js, нативного кода там нет. Многие библиотеки поставляют свои моки (например, AsyncStorage, Reanimated), для остального пишут jest.mock('модуль', () => ({...})) в файле настройки. Лучше всего спрятать нативный API за своим сервисом и подменять его фейком. Устройство и сборка для unit-тестов не нужны.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.