Jest: coverage отчёты
Coverage (покрытие кода) в Jest — метрика, показывающая какая доля строк, ветвей, функций и выражений выполняется во время тестов.
Зачем нужно
Coverage-отчёт позволяет найти непроверенные ветви кода и снизить риск скрытых багов. CI-пайплайн может блокировать мерж если покрытие упало ниже порога — это дисциплинирует команду. Важно понимать: 100% coverage не означает отсутствие багов, но низкий процент — верный признак рисков.
Где используется
- CI/CD: проверка coverage-threshold перед мержем в main
- Code review: быстрая идентификация непокрытых ветвей
- Рефакторинг: убедиться, что тест действительно проходит по изменённому коду
- Onboarding: новый разработчик видит, что вообще покрыто тестами
Основной контент
Запуск сбора coverage
npx jest --coverage
# Или через скрипт в package.json
# "test:coverage": "jest --coverage"
Конфигурация в jest.config.js
module.exports = {
collectCoverage: true,
coverageDirectory: 'coverage',
coverageReporters: ['text', 'lcov', 'html'],
coverageThreshold: {
global: {
branches: 80,
functions: 80,
lines: 80,
statements: 80,
},
},
collectCoverageFrom: [
'src/**/*.{js,ts}',
'!src/**/*.d.ts',
'!src/index.js',
],
};
Метрики coverage
| Метрика | Что считает |
|---|---|
| Statements | Отдельные выражения |
| Branches | Ветви if/else, тернарные, &&, ?? |
| Functions | Объявленные функции |
| Lines | Строки с кодом |
Исключение строк из coverage
function devOnly() {
/* istanbul ignore next */
if (process.env.NODE_ENV === 'development') {
console.log('debug');
}
}
HTML-отчёт
После запуска открой coverage/lcov-report/index.html — интерактивный отчёт с подсветкой непокрытых строк и ветвей по каждому файлу.
Частые ошибки
- Coverage 100% = безопасность — тесты могут проходить строки, но не проверять корректность результата
- Не задан
collectCoverageFrom— неиспортируемые файлы не попадут в отчёт - Порог 100% с первого дня — блокирует работу; начинай с 70–80% и повышай постепенно
- Коммит папки
coverage/— добавь её в.gitignore
Связанные темы
- _MOC Тестирование
- Jest основы
- Jest -- установка и настройка
- Jest -- конфигурация и плагины
- Unit тесты