В информатике охват тестирования – это мера, используемая для описания степени, в которой исходный код программы выполняется при запуске конкретного набора тестов.
Покрытие кода – Википедия
Покрытие кода обычно используется в качестве показателя качества для программного обеспечения, например. «Наш код должен иметь 80%+ тестовый охват». Сбор тестового покрытия с шутками так же просто, как использование -Coverage флаг на вызов.
Этот пост проходит через то, как игнорировать файлы, функции и операторы из охвата в Jest, используя конфигурацию или стайсбул. А также причины и ограничения на то, почему/как бы вы сделали такую вещь.
Вы можете найти репозиторий рабочих примеров в github.com/hugodf/jest-ignore-coverage Анкет
Как Jest даже рассчитывает покрытие?
Jest использует Стамбул под капюшоном для расчета покрытия. В основном шутки абстрагирует это от конечного пользователя, все, что вам нужно сделать в своем приложении, это Call шутка -Coverage (и настроили соответствующие поля конфигурации покрытия). Тот факт, что Стамбул используется внутри, действительно показывает, например, Документация для CoveragerePorters Упишивает, что «любой репортер ISTANBUL можно использовать», что показывает, что на самом деле собирает данные о покрытии и генерирует отчеты.
Зачем мне исключать файлы из покрытия?
Как заявлено сохранники и авторы библиотеки охвата Стамбула:
Некоторые филиалы в коде JS обычно жесткие, если не невозможно проверить. Примерами являются проверка HasownProperty, обертки UMD и так далее. Стамбул теперь имеет объект, с помощью которого покрытие может быть исключено для определенных разделов кода.
Стамбул – Игнорировать код для целей покрытия
Более того, в большинстве случаев охват 100% не требуется или даже разумно. Некоторые файлы не содержат (деловой) логику. Или они содержат логику, которая потерпит неудачу очень очевидным образом (например. стартер сбивается с началом).
Например, сценарий, который будет начал загрузку приложения, может привязаться к порту, что делает его громоздким для тестирования. Файл, который импортирует все различные зависимости и app.use () -С их в экспресс -настройке станет еще одним кандидатом на то, чтобы избежать модульного тестирования/зависимости, насмехающихся над адом.
Другим классом файлов/функций, которые вы можете игнорировать для целей покрытия, являются тестовыми помощниками. Неважно, что некоторые из них не работают как часть тестов, поскольку они не тестируют тестирование кода.
Как и во многих вещах в программном обеспечении, речь идет о компромиссах.
Исключить файлы (ы) из охвата Jest, не выполняя соответствующие тесты, используя конфигурацию
Есть вариант настройки шутки testpathignorePatterns ( См. Документы для TestPathignorePatterns )
Самый простой способ настроить это – через Package.json :
{
"jest": {
"testPathIgnorePatterns" : [
"/ignore/this/path/"
]
}
}
Смотрите в действии в Исключить файлы (ы) из охвата Jest, используя конфигурацию на GitHub Анкет
Исключить файлы (ы) из покрытия, не включив его в конфигурацию сбора покрытия
В качестве альтернативы или увеличения для не выполнения тестов (как видно из «исключить файл из охвата Jest путем не выполняя соответствующие тесты с использованием конфигурации») из охвата Jest, не включив его в отчеты о покрытии, которые контролируются COLLECTCOVERAGEFROM Опция настройки Jest ( См. Документы для Jest CollectCoverageFrom ).
Используйте что -то вроде следующего:
{
"jest": {
"collectCoverageFrom": [
"src/**/{!(ignore-me),}.js"
]
}
}
Важно : Обязательно оберните имя игнорируемого файла с помощью () Анкет
Смотрите в действии в Исключить файлы (ы) из охвата Jest, используя конфигурацию на GitHub Анкет
Исключить файл из охвата Jest на уровне файла
Мы можем использовать Istanbul Pragmas, чтобы игнорировать файлы, используя следующий комментарий в верхней части любого файла:
/* istanbul ignore file */
Смотрите в действии в Исключить файл из покрытия Jest на уровне файла на GitHub
Исключить функцию из охвата шутки
/* istanbul ignore next */
function myFunc() {
console.log(
"Not covered but won't appear on coverage reports as such"
);
}
Смотрите в действии в Исключить функцию или оператор из охвата Jest на GitHub Анкет
Исключить заявление из охвата шутки
Избегайте этого, если вы можете, если вы тестируете какой -то код, вы, вероятно, должны протестировать все этого кода.
function myFunc(a) {
/* istanbul ignore else */
if (a) {
// do some work
} else {
// do some other work
}
}
Смотрите в действии в Исключить функцию или оператор из охвата Jest на GitHub Анкет
Дальнейшее чтение
Смотрите Оригинальная документация Стамбуля по игнорированию кода для покрытия Для более широкого взгляда на то, как это сделать в разных ситуациях.
Я также поставил вместе примеры репо со всеми различными случаями в действии github.com/hugodf/jest-ignore-coverage Анкет
unsplash-logo Чарльз 🇵🇭
Оригинал: “https://dev.to/hugo__df/jest-exclude-file-function-statement-from-test-coverage-b1b”