Параметры командной строки Jest
Средство запуска командной строки jest имеет ряд полезных параметров. Выполните команду jest --help, чтобы просмотреть все доступные параметры. Многие из приведённых ниже параметров можно также использовать вместе, чтобы запускать тесты именно так, как вам нужно. Любой параметр конфигурации Jest можно также задать через CLI.
Краткий обзор:
Запуск из командной строки
Запустить все тесты (по умолчанию):
jest
Запустить только тесты, указанные с помощью шаблона или имени файла:
jest my-test #or jest path/to/my-test.js
Запустить тесты, связанные с изменёнными файлами на основе hg/git (незафиксированные файлы):
jest -o
Запустить тесты, связанные с path/to/fileA.js и path/to/fileB.js:
jest --findRelatedTests path/to/fileA.js path/to/fileB.js
Запустить тесты, соответствующие этому имени спецификации (в основном, сопоставление с именем в describe или test).
jest -t name-of-spec
Запустить в режиме наблюдения:
jest --watch #runs jest -o by default jest --watchAll #runs all tests
В режиме наблюдения также можно указать имя или путь к файлу, чтобы сосредоточиться на определённом наборе тестов.
Использование с менеджером пакетов
Если вы запускаете Jest через менеджер пакетов, аргументы командной строки всё равно можно передавать напрямую как аргументы Jest.
Вместо:
jest -u -t="ColorPicker"
можно использовать:
- npm
- Yarn
- pnpm
- Bun
npm test -- -u -t="ColorPicker"
yarn test -u -t="ColorPicker"
pnpm test -u -t="ColorPicker"
bun run test -u -t "ColorPicker"
Поддержка аргументов в camelCase и формате с дефисами
Jest поддерживает аргументы как в формате camelCase, так и в формате с дефисами. Следующие примеры дадут одинаковый результат:
jest --collect-coverage jest --collectCoverage
Аргументы также можно сочетать:
jest --update-snapshot --detectOpenHandles
Параметры
Параметры CLI имеют приоритет над значениями из конфигурации.
- Поддержка аргументов в camelCase и формате с дефисами
- Параметры
-
Справочник
jest <regexForTestFiles>--bail[=<n>]--cache--changedFilesWithAncestor--changedSince--ci--clearCache--clearMocks--collectCoverageFrom=<glob>--collectTests--colors--config=<path>--coverage[=<boolean>]--coverageDirectory=<path>--coverageProvider=<provider>--debug--detectOpenHandles--env=<environment>--errorOnDeprecated--expand--filter=<file>--findRelatedTests <spaceSeparatedListOfSourceFiles>--forceExit--help--ignoreProjects <project1> ... <projectN>--injectGlobals--json--lastCommit--listTests--logHeapUsage--maxConcurrency=<num>--maxWorkers=<num>|<string>--noStackTrace--notify--onlyChanged--onlyFailures--openHandlesTimeout=<milliseconds>--outputFile=<filename>--passWithNoTests--projects <path1> ... <pathN>--randomize--reporters--resetMocks--restoreMocks--roots--runInBand--runTestsByPath--seed=<num>--selectProjects <project1> ... <projectN>--setupFilesAfterEnv <path1> ... <pathN>--shard--showConfig--showSeed--silent--testEnvironmentOptions=<json string>--testLocationInResults--testMatch glob1 ... globN--testNamePattern=<regex>--testPathIgnorePatterns=<regex>|[array]--testPathPatterns=<regex>--testRunner=<path>--testSequencer=<path>--testTimeout=<number>--updateSnapshot--useStderr--verbose--version--waitForUnhandledRejections--watch--watchAll--watchman--workerGracefulExitTimeout=<number>--workerThreads
Справочник
jest <regexForTestFiles>
Если запустить jest с аргументом, этот аргумент будет трактоваться как регулярное выражение для сопоставления с файлами проекта. Наборы тестов можно запускать, указав шаблон. Будут выбраны и выполнены только файлы, соответствующие шаблону. В зависимости от используемого терминала этот аргумент может потребоваться заключить в кавычки: jest "my.*(complex)?pattern". В Windows в качестве разделителя пути необходимо использовать / либо экранировать \ как \\.
--bail[=<n>]
Псевдоним: -b. Немедленно завершает выполнение набора тестов после n неудачного набора тестов. По умолчанию — 1.
--cache
Использовать ли кэш. По умолчанию включено. Отключить кэш можно с помощью --no-cache.
Отключать кэш следует только при возникновении проблем, связанных с кэшированием. В среднем отключение кэша замедляет Jest как минимум в два раза.
Чтобы проверить кэш, используйте --showConfig и посмотрите значение cacheDirectory. Чтобы очистить кэш, используйте --clearCache.
--changedFilesWithAncestor
Запускает тесты, связанные с текущими изменениями и изменениями, внесёнными в последнем коммите. Работает аналогично --onlyChanged.
--changedSince
Запускает тесты, связанные с изменениями, внесёнными после указанной ветки или хеша коммита. Если текущая ветка разошлась с указанной веткой, проверяются только локальные изменения. Работает аналогично --onlyChanged.
--ci
При указании этого параметра Jest считает, что выполняется в среде CI. Это меняет поведение при обнаружении нового снимка. Вместо обычного поведения, при котором новый снимок сохраняется автоматически, тест завершится с ошибкой, и для запуска Jest потребуется указать --updateSnapshot.
--clearCache
Удаляет каталог кэша Jest и завершает работу, не запуская тесты. Удаляется cacheDirectory, если указан этот параметр, или каталог кэша Jest по умолчанию. Каталог кэша по умолчанию можно узнать, вызвав jest --showConfig.
Очистка кэша снижает производительность.
--clearMocks
Автоматически очищает вызовы, экземпляры, контексты и результаты моков перед каждым тестом. Эквивалентно вызову jest.clearAllMocks() перед каждым тестом. При этом реализации моков, если они были заданы, не удаляются.
--collectCoverageFrom=<glob>
Шаблон glob относительно rootDir, соответствующий файлам, для которых нужно собрать данные о покрытии.
--collectTests
Находит и выводит все наборы тестов и имена тестов, не выполняя их. Jest загружает каждый файл тестов, вычисляет блоки describe верхнего уровня для регистрации тестов, а затем завершает работу, не выполняя код тестов и хуки жизненного цикла.
Результат представляет собой дерево путей к файлам с вложенными именами describe и тестов, за которым следует сводка общего количества. Пропущенные тесты и тесты со статусом todo помечаются соответствующим образом, а для каждого файла, при загрузке которого возникла ошибка, выводится сообщение об ошибке (код завершения будет ненулевым):
path/to/my.test.ts
My suite
passes
skips [skipped]
write later [todo]
Test suites: 1
Tests: 3 total, 1 runnable, 1 skipped, 1 todo
Параметризованные тесты, объявленные с помощью test.each / describe.each, разворачиваются в отдельные записи для каждого варианта. Каждый собранный тест классифицируется так же, как и при обычном запуске:
- тест, который должен был бы запуститься, указывается в категории
passedи помечается какwouldRun: true(он был выбран, но не выполнялся); -
test.skip, тесты внутри пропущенного блокаdescribe, тесты, исключённые параметромtest.only, и тесты, исключённые параметром--testNamePattern, указываются какpending; -
test.todoуказывается какtodo.
Поскольку каждый тест относится к той же категории, что и при фактическом запуске, количество, сообщаемое командой --collectTests, совпадает с количеством при запуске, в котором все выбранные тесты проходят успешно. Поэтому эту команду можно использовать для подсчёта тестов без их выполнения, в том числе в среде --testNamePattern.
Для получения машиночитаемого вывода используйте --json. JSON имеет ту же структуру, что и при обычном запуске, включая numTotalTests, numPassedTests, numPendingTests и numTodoTests; каждый результат проверки содержит описанный выше флаг wouldRun.
--colors
Принудительно включает цветовую подсветку результатов тестов, даже если stdout не является TTY.
Вместо этого можно установить переменную среды FORCE_COLOR=true, чтобы принудительно включить цветной вывод, или FORCE_COLOR=false, чтобы отключить его. Использование FORCE_COLOR переопределяет все остальные проверки поддержки цвета.
--config=<path>
Псевдоним: -c. Путь к файлу конфигурации Jest, задающему поиск и выполнение тестов. Если в конфигурации не задан rootDir, каталог, содержащий файл конфигурации, считается rootDir проекта. Вместо этого также можно указать значение в формате JSON, которое Jest будет использовать в качестве конфигурации.
--coverage[=<boolean>]
Псевдоним: --collectCoverage. Указывает, что нужно собрать информацию о покрытии тестами и вывести отчёт. При необходимости передайте <boolean>, чтобы переопределить параметр конфигурации.
--coverageDirectory=<path>
Каталог, в который Jest должен записать файлы покрытия.
--coverageProvider=<provider>
Указывает, какой поставщик инструментирования кода использовать для сбора покрытия. Допустимые значения: babel (по умолчанию) или v8.
--debug
Выводит отладочную информацию о конфигурации Jest.
--detectOpenHandles
Пытается собрать и вывести сведения об открытых дескрипторах, мешающих Jest корректно завершить работу. Используйте этот параметр, если вам приходится применять --forceExit, чтобы Jest завершил работу, и вы хотите выяснить причину. Этот параметр подразумевает --runInBand, поэтому тесты выполняются последовательно. Реализован с помощью async_hooks. Этот параметр значительно снижает производительность и предназначен только для отладки.
--env=<environment>
Среда выполнения для всех тестов. Можно указать любой файл или модуль Node.js. Примеры: jsdom, node или path/to/my-environment.js.
--errorOnDeprecated
При вызове устаревших API генерирует исключения с полезными сообщениями об ошибках. Помогает упростить процесс обновления.
--expand
Псевдоним: -e. Используйте этот флаг, чтобы показывать полные различия и ошибки вместо патча.
--filter=<file>
Путь к модулю, экспортирующему функцию фильтрации. Эта асинхронная функция получает список путей к тестам, который можно изменить, чтобы исключить тесты из запуска, и должна вернуть объект формы { filtered: Array<string> }, содержащий тесты, которые должен запускать Jest. Особенно полезна в сочетании с инфраструктурой тестирования для фильтрации известных нестабильных тестов.
// This filter when applied will only run tests ending in .spec.js (not the best way to do it, but it's just an example):
const filteringFunction = testPath => testPath.endsWith('.spec.js');
module.exports = testPaths => {
const allowedPaths = testPaths.filter(filteringFunction); // ["path1.spec.js", "path2.spec.js", etc]
return {
filtered: allowedPaths,
};
};
--findRelatedTests <spaceSeparatedListOfSourceFiles>
Находит и запускает тесты, охватывающие список исходных файлов, переданный в виде аргументов, разделённых пробелами. Полезно для интеграции с хуками pre-commit, чтобы запускать минимально необходимое количество тестов. Можно использовать вместе с --coverage, чтобы включить покрытие исходных файлов тестами без необходимости указывать дублирующие аргументы --collectCoverageFrom.
--forceExit
Принудительно завершает работу Jest после выполнения всех тестов. Полезно, если ресурсы, созданные кодом тестов, невозможно корректно освободить.
Эта функция — крайняя мера. Если Jest не завершается после выполнения тестов, значит, код удерживает внешние ресурсы или в нём остались ожидающие таймеры. Рекомендуется освобождать внешние ресурсы после каждого теста, чтобы Jest мог корректно завершить работу. Для поиска причины можно использовать --detectOpenHandles.
--help
Показывает справочную информацию, аналогичную этой странице.
--ignoreProjects <project1> ... <projectN>
Не запускает тесты указанных проектов. Для определения каждого проекта Jest использует атрибут displayName в конфигурации. Если вы используете этот параметр, необходимо указать displayName для всех проектов.
--injectGlobals
Добавляет глобальные объекты Jest (expect, test, describe, beforeEach и т. д.) в глобальное окружение. Если установить значение false, следует импортировать их из @jest/globals, например:
import {expect, jest, test} from '@jest/globals';
jest.useFakeTimers();
test('some test', () => {
expect(Date.now()).toBe(0);
});
Этот параметр поддерживается только при использовании стандартного средства запуска тестов jest-circus.
--json
Выводит результаты тестов в формате JSON. В этом режиме весь остальной вывод тестов и сообщения пользователя направляются в stderr.
--lastCommit
Запускает все тесты, на которые повлияли изменения файлов в последнем коммите. Работает аналогично --onlyChanged.
--listTests
Выводит список всех файлов тестов, которые Jest запустил бы с заданными аргументами, и завершает работу.
--logHeapUsage
Выводит информацию об использовании кучи после каждого теста. Полезно для отладки утечек памяти. Используйте вместе с --runInBand и --expose-gc в Node.js.
--maxConcurrency=<num>
Не позволяет Jest одновременно выполнять больше указанного количества тестов. Влияет только на тесты, использующие test.concurrent.
--maxWorkers=<num>|<string>
Псевдоним: -w. Задаёт максимальное количество рабочих процессов, создаваемых пулом для выполнения тестов. При однократном запуске по умолчанию используется число ядер компьютера минус одно для основного потока. В режиме наблюдения по умолчанию используется половина доступных ядер, чтобы Jest работал незаметно и не перегружал компьютер. Этот параметр может пригодиться в средах с ограниченными ресурсами, например в CI, но для большинства случаев достаточно значений по умолчанию.
В средах с переменным количеством доступных процессоров можно использовать конфигурацию на основе процентов: --maxWorkers=50%
--noStackTrace
Отключает вывод трассировки стека в результатах тестов.
--notify
Включает системные уведомления ОС о результатах тестов. Полезно, если вы хотите полностью сосредоточиться на тестировании JavaScript. Для отображения уведомлений Jest требуется пакет node-notifier, который нужно установить отдельно.
--onlyChanged
Псевдоним: -o. Пытается определить, какие тесты запускать, исходя из того, какие файлы изменились в текущем репозитории. Работает только при запуске тестов в репозитории git/hg и требует статического графа зависимостей (то есть без динамических вызовов require).
--onlyFailures
Псевдоним: -f. Запускает тесты, завершившиеся с ошибкой при предыдущем выполнении.
--openHandlesTimeout=<milliseconds>
Если --detectOpenHandles и --forceExit отключены, Jest выведет предупреждение, если процесс не завершился корректно за указанное количество миллисекунд. Значение 0 отключает предупреждение. По умолчанию — 1000.
--outputFile=<filename>
Записывает результаты тестов в файл, если также указан параметр --json. Возвращаемая структура JSON описана в testResultsProcessor.
--passWithNoTests
Позволяет набору тестов завершиться успешно, если файлы не найдены.
--projects <path1> ... <pathN>
Запускает тесты одного или нескольких проектов, найденных по указанным путям; также поддерживаются шаблоны путей. Этот параметр CLI соответствует параметру конфигурации projects.
Если по указанным путям найдены файлы конфигурации, будут запущены все проекты, указанные в этих файлах.
--randomize
Перемешивает порядок тестов в файле. Перемешивание зависит от начального значения (seed). Подробнее см. в разделе --seed=<num>.
При включении этого параметра отображается значение seed. Эквивалентно указанию параметра CLI --showSeed.
jest --randomize --seed 1234
Этот параметр поддерживается только при использовании стандартного средства запуска тестов jest-circus.
--reporters
Запускает тесты с указанными репортерами. Параметры репортеров нельзя задавать через CLI. Пример с несколькими репортерами:
jest --reporters="default" --reporters="jest-junit"
--resetMocks
Автоматически сбрасывает состояние моков перед каждым тестом. Эквивалентно вызову jest.resetAllMocks() перед каждым тестом. В результате у всех моков удаляются фиктивные реализации, но исходные реализации не восстанавливаются.
--restoreMocks
Автоматически восстанавливает состояние и реализацию моков перед каждым тестом. Эквивалентно вызову jest.restoreAllMocks() перед каждым тестом. В результате у всех моков удаляются фиктивные реализации и восстанавливаются исходные реализации.
--roots
Список путей к каталогам, в которых Jest должен искать файлы.
--runInBand
Псевдоним: -i. Запускает все тесты последовательно в текущем процессе, а не создаёт пул рабочих дочерних процессов для выполнения тестов. Может быть полезно для отладки.
--runTestsByPath
Запускает только тесты, указанные точными путями. Это позволяет не преобразовывать их в регулярное выражение и не сопоставлять его с каждым файлом.
Например, при следующей структуре файлов:
__tests__ └── t1.test.js # test └── t2.test.js # test
При запуске с шаблоном тесты не найдены:
jest --runTestsByPath __tests__/t
Вывод:
No tests found
Однако при передаче точного пути будет выполнен только указанный тест:
jest --runTestsByPath __tests__/t1.test.js
Вывод:
PASS __tests__/t1.test.js
Стандартное сопоставление с помощью регулярных выражений хорошо работает при небольшом количестве запусков, но замедляется при использовании нескольких шаблонов и/или большом количестве тестов. Этот параметр заменяет логику сопоставления регулярных выражений и тем самым ускоряет фильтрацию определённых файлов тестов Jest.
--seed=<num>
Задаёт начальное значение, которое можно получить в файле теста с помощью jest.getSeed(). Значение seed должно быть в диапазоне от -0x80000000 до 0x7fffffff включительно (-2147483648 (-(2 ** 31)) и 2147483647 (2 ** 31 - 1) в десятичной системе счисления).
jest --seed=1324
Если этот параметр не указан, Jest сгенерирует значение случайным образом. Чтобы вывести seed в сводке отчёта о тестах, можно использовать флаг --showSeed.
Jest использует seed для перемешивания порядка запуска наборов тестов. Если задан параметр --randomize, seed также используется для перемешивания порядка тестов внутри каждого блока describe. При работе с нестабильными тестами повторный запуск с тем же seed может помочь воспроизвести сбой.
--selectProjects <project1> ... <projectN>
Запускает тесты указанных проектов. Для определения каждого проекта Jest использует атрибут displayName в конфигурации. Если вы используете этот параметр, необходимо указать displayName для всех проектов.
--setupFilesAfterEnv <path1> ... <pathN>
Список путей к модулям, выполняющим код для настройки или подготовки среды тестирования перед каждым файлом тестов. Обратите внимание: файлы, импортированные скриптами настройки, не будут замокированы во время тестирования.
--shard
Фрагмент набора тестов, который нужно выполнить; задаётся в формате (?<shardIndex>\d+)/(?<shardCount>\d+).
shardIndex указывает, какой фрагмент выбрать, а shardCount задаёт количество фрагментов, на которые нужно разделить набор.
Значения shardIndex и shardCount должны быть положительными числами, начиная с 1, а shardIndex должно быть меньше или равно shardCount.
Если указан параметр shard, настроенный testSequencer должен реализовывать метод shard.
Например, чтобы разделить набор на три фрагмента, каждый из которых запускает треть тестов:
jest --shard=1/3 jest --shard=2/3 jest --shard=3/3
--showConfig
Выводит конфигурацию Jest и завершает работу.
--showSeed
Выводит значение seed в сводке отчёта о тестах. Подробнее см. в разделе --seed=<num>.
Также можно задать в конфигурации. См. showSeed.
--silent
Запретить вывод сообщений тестами в консоль.
--testEnvironmentOptions=<json string>
Строка JSON с параметрами, которые будут переданы в testEnvironment. Необходимые параметры зависят от среды.
--testLocationInResults
Добавляет поле location в результаты тестов. Полезно, если вы хотите указать расположение теста в репортёре.
line начинается с 1. column начинается с 1 при использовании стандартного раннера jest-circus, но с 0 при использовании jest-jasmine2. В Jest 31 оба значения будут начинаться с 1, как и позиции, которые V8 указывает в трассировке стека и с помощью CallSite.
{
"column": 4,
"line": 5
}
--testMatch glob1 ... globN
Шаблоны glob, которые Jest использует для поиска файлов тестов. Подробности см. в конфигурации testMatch.
--testNamePattern=<regex>
Псевдоним: -t. Запустить только тесты, имена которых соответствуют регулярному выражению. Например, если вы хотите запустить только тесты, связанные с авторизацией, с именами вроде 'GET /api/posts with auth', используйте jest -t=auth.
Регулярное выражение сопоставляется с полным именем, которое состоит из имени теста и всех охватывающих его блоков describe.
--testPathIgnorePatterns=<regex>|[array]
Одна строка с шаблоном регулярного выражения или массив таких строк, которые проверяются для всех путей к тестам перед запуском теста. В отличие от --testPathPatterns, будут запускаться только тесты, путь к которым не соответствует предоставленным регулярным выражениям.
Чтобы передать массив, используйте экранированные круглые скобки и регулярные выражения, разделённые пробелами, например \(/node_modules/ /tests/e2e/\). Также можно опустить скобки, объединив регулярные выражения в одно, например /node_modules/|/tests/e2e/. Эти два примера эквивалентны.
--testPathPatterns=<regex>
Строка с шаблоном регулярного выражения, которая сопоставляется со всеми путями к тестам перед запуском теста. В Windows в качестве разделителя пути необходимо использовать / или экранировать \ как \\.
--testRunner=<path>
Позволяет указать собственный раннер тестов.
--testSequencer=<path>
Позволяет указать собственный секвенсор тестов. Подробности см. в конфигурации testSequencer.
--testTimeout=<number>
Тайм-аут теста по умолчанию в миллисекундах. Значение по умолчанию: 5000.
--updateSnapshot
Псевдоним: -u. Используйте этот флаг, чтобы повторно записать все снимки, не прошедшие во время этого запуска тестов. Можно использовать вместе с шаблоном набора тестов или с --testNamePattern для повторной записи снимков.
--useStderr
Перенаправить весь вывод в stderr.
--verbose
Отображать результаты отдельных тестов с иерархией набора тестов.
--version
Псевдоним: -v. Вывести версию и завершить работу.
--waitForUnhandledRejections
Даёт один цикл событий на обработку rejectionHandled, uncaughtException или unhandledRejection.
Без этого флага Jest может сообщать о ложноположительных ошибках (например, сообщать об отклонённом промисе, который был обработан) или не сообщать о действительно необработанном отклонении (либо сообщать о нём для другого тестового случая).
Этот параметр может заметно замедлить выполнение быстрых наборов тестов.
--watch
Отслеживать изменения файлов и повторно запускать тесты, связанные с изменёнными файлами. Если вы хотите повторно запускать все тесты при изменении файла, используйте вместо этого параметр --watchAll.
Используйте --no-watch (или --watch=false), чтобы явно отключить режим наблюдения, если он был включён с помощью --watch. В большинстве сред CI это происходит автоматически.
--watchAll
Отслеживать изменения файлов и повторно запускать все тесты при любых изменениях. Если вы хотите повторно запускать только тесты, зависящие от изменённых файлов, используйте параметр --watch.
Используйте --no-watchAll (или --watchAll=false), чтобы явно отключить режим наблюдения, если он был включён с помощью --watchAll. В большинстве сред CI это происходит автоматически.
--watchman
Использовать ли watchman для обхода файловой системы. По умолчанию true. Отключите с помощью --no-watchman.
--workerGracefulExitTimeout=<number>
Тайм-аут в миллисекундах, в течение которого рабочие процессы должны завершиться корректно после выполнения тестов. Рабочие процессы, не завершившиеся вовремя, принудительно завершаются. Значение по умолчанию: 500.
--workerThreads
Использовать ли потоки-воркеры для параллельного выполнения. По умолчанию используются дочерние процессы.
Это экспериментальная функция. Подробнее см. в параметре конфигурации workerThreads.
© 2022 Facebook, Inc.
Licensed under the MIT License.
https://jestjs.io/docs/cli