Покрытие кода (code coverage) — это метрика, которая измеряет процент кода, который был выполнен во время тестов. Это помогает определить, какие части вашего кода были протестированы, а какие могут потребовать дополнительного тестирования или оптимизации.
Jest предоставляет встроенный инструмент для генерации отчетов о покрытии кода. Эти отчеты показывают, какой процент кода был покрыт тестами, и могут быть полезны для выявления областей, которые нуждаются в дополнительном тестировании.
**Как создать отчет о покрытии кода в Jest
-
Запуск тестов с флагом
--coverage
:Чтобы сгенерировать отчет о покрытии кода, запустите тесты с флагом
--coverage
:
npm test -- --coverage
Эта команда укажет Jest собирать информацию о покрытии и создавать отчет.
-
Формат отчета:
По умолчанию Jest генерирует текстовый отчет о покрытии. Однако вы можете настроить формат отчета, используя опцию
coverageReporters
в файле конфигурации Jest (jest.config.js
). Например, чтобы создать HTML-отчет, добавьте следующую настройку:
module.exports = {
// другие настройки Jest
coverageReporters: ['text', 'html'],
};
-
Анализ отчета:
После запуска тестов с флагом
--coverage
, Jest создаст отчет в каталогеcoverage
. Вы можете открыть файлindex.html
в этом каталоге, чтобы просмотреть подробный HTML-отчет.Отчет включает следующие детали:
- Statement coverage: Процент исполняемых операторов, которые были выполнены.
- Branch coverage: Процент условных ветвей (например,
if
иswitch
операторов), которые были выполнены. - Function coverage: Процент функций, которые были вызваны.
- Line coverage: Процент строк кода, которые были выполнены.
-
Установка пороговых значений:
Вы можете установить пороговые значения покрытия в файле конфигурации Jest. Если покрытие окажется ниже заданных пороговых значений, Jest не пропустит тесты и предоставит сводную информацию о областях, требующих дополнительного тестирования. Например:
module.exports = { // другие настройки Jest coverageThreshold: { global: { branches: 80, functions: 80, lines: 80, statements: 80, }, }, };
5. **Исключения из покрытия
Иногда вам может потребоваться исключить определенные файлы или части кода из отчета о покрытии. Вы можете сделать это, используя директиву `/* istanbul ignore next */` в коде или указав исключения в конфигурации Jest:
```javascript
module.exports = {
// ...
collectCoverageFrom: [
'src/**/*.{js,jsx}',
'!src/some-directory/**', // Исключение директории
'!src/some-file.js', // Исключение конкретного файла
],
};