Базовое тестирование
Тестирование в React Native помогает убедиться, что код работает так, как ожидается, и предотвращает появление регрессий при внесении изменений. На начальном этапе обучения достаточно понимать разницу между тестированием логики и тестированием интерфейса.
Типы тестов
- Unit-тесты (модульные) — проверяют отдельные функции или модули без зависимости от UI.
- Интеграционные тесты — проверяют взаимодействие нескольких частей приложения.
- E2E-тесты (end-to-end) — имитируют действия пользователя в готовом приложении.
Jest — фреймворк для unit-тестов
Jest встроен в React Native по умолчанию. Он позволяет писать тесты для чистых функций, утилит, хуков (с ограничениями) и бизнес-логики.
Пример unit-теста:
// utils/formatPrice.ts
export const formatPrice = (price: number): string => {
return `${price.toFixed(2)} ₽`;
};
// __tests__/formatPrice.test.ts
import { formatPrice } from '../utils/formatPrice';
test('formats price correctly', () => {
expect(formatPrice(10)).toBe('10.00 ₽');
expect(formatPrice(9.99)).toBe('9.99 ₽');
});
Запуск тестов:
npm test
# или
npx jest
Тестирование UI: React Native Testing Library и Detox
- React Native Testing Library (RNTL) — библиотека для тестирования компонентов в изолированной среде. Позволяет рендерить компонент и проверять наличие текста, кнопок, состояние после взаимодействия.
- Detox — фреймворк для E2E-тестов. Запускает реальное приложение на эмуляторе и выполняет сценарии (например, «нажать кнопку → проверить экран»).
Однако на начальном этапе не рекомендуется углубляться в UI-тесты. Они сложнее в настройке и поддержке, особенно без опыта.