Покрытие кода (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',     // Исключение конкретного файла
  ],
};

Назад