Покрытие кода (code coverage)  — это метрика, которая измеряет процент кода, который был выполнен во время тестов. Это помогает определить, какие части вашего кода были протестированы, а какие могут потребовать дополнительного тестирования или оптимизации.

Jest предоставляет встроенный инструмент для генерации отчетов о покрытии кода. Эти отчеты показывают, какой процент кода был покрыт тестами, и могут быть полезны для выявления областей, которые нуждаются в дополнительном тестировании.

**Как создать отчет о покрытии кода в Jest

  1. Запуск тестов с флагом --coverage:

    Чтобы сгенерировать отчет о покрытии кода, запустите тесты с флагом --coverage:

    npm test -- --coverage

Эта команда укажет Jest собирать информацию о покрытии и создавать отчет.

  1. Формат отчета:

    По умолчанию Jest генерирует текстовый отчет о покрытии. Однако вы можете настроить формат отчета, используя опцию coverageReporters в файле конфигурации Jest (jest.config.js). Например, чтобы создать HTML-отчет, добавьте следующую настройку:

    module.exports = {
      // другие настройки Jest
      coverageReporters: ['text', 'html'],
    };
  1. Анализ отчета:

    После запуска тестов с флагом --coverage, Jest создаст отчет в каталоге coverage. Вы можете открыть файл index.html в этом каталоге, чтобы просмотреть подробный HTML-отчет.

    Отчет включает следующие детали:

    • Statement coverage: Процент исполняемых операторов, которые были выполнены.
    • Branch coverage: Процент условных ветвей (например, if и switch операторов), которые были выполнены.
    • Function coverage: Процент функций, которые были вызваны.
    • Line coverage: Процент строк кода, которые были выполнены.
  2. Установка пороговых значений:

    Вы можете установить пороговые значения покрытия в файле конфигурации 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',     // Исключение конкретного файла
  ],
};

Назад