Skip to content
Vitest 1
Main Navigation РуководствоAPIКонфигурацияПродвинутый
3.2.0
2.1.9
1.6.1
0.34.6

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Внешний вид

Sidebar Navigation

Зачем Vitest

Начало работы

Функциональность

Рабочая область

Интерфейс командной строки

Фильтрация тестов

Репортёры

Покрытие кода

Снапшоты

Мокирование

Тестирование типов

Vitest UI

Режим браузера

In-source тестирование (Тестирование в исходном коде)

Контекст теста

Тестовая среда

Расширение проверок (matchers)

Интеграции с IDE

Отладка

Сравнения с другими тестовыми фреймворками

Руководство по миграции

Распространенные ошибки

Улучшение производительности

Содержание страницы

Интерфейс командной строки ​

Команды ​

vitest ​

Запускает Vitest в текущей директории. Автоматически активирует режим наблюдения в среде разработки и режим выполнения в CI.

Вы можете передать дополнительный аргумент в качестве фильтра для запускаемых тестовых файлов. Например:

bash
vitest foobar

Запустит только те тестовые файлы, пути которых содержат foobar. Этот фильтр проверяет только наличие подстроки и не поддерживает регулярные выражения или glob-шаблоны, если ваш терминал не обрабатывает их перед тем, как Vitest получит фильтр.

vitest run ​

Выполняет однократный запуск тестов без режима наблюдения.

vitest watch ​

Запускает все наборы тестов и отслеживает изменения, перезапуская тесты при их обнаружении. Эквивалентно вызову vitest без аргументов. В CI автоматически переключается на vitest run.

vitest dev ​

Альтернативное название для vitest watch.

vitest related ​

Запускает только те тесты, которые покрывают указанные исходные файлы. Работает со статическими импортами (например, import('./index.js') или import index from './index.js')), но не с динамическими (например, import(filepath)). Все файлы должны быть указаны относительно корневой папки проекта.

Полезно при использовании с lint-staged или в вашей системе CI.

bash
vitest related /src/index.ts /src/hello-world.js

TIP

Учтите, что Vitest по умолчанию запускается в режиме наблюдения. Если вы используете такие инструменты, как lint-staged, вам также следует передать опцию --run, чтобы команда могла нормально завершиться.

js
// .lintstagedrc.js
export default {
  '*.{js,ts}': 'vitest related --run',
};

vitest bench ​

Запускает только [тесты производительности (benchmark)], сравнивающие результаты.

Опции ​

Параметр
-r, --root <путь>Корневой путь
-c, --config <путь>Путь к файлу конфигурации
-u, --updateОбновить снимок
-w, --watchВключить режим наблюдения
-t, --testNamePattern <шаблон>Запускать тесты с полными именами, соответствующими указанному шаблону регулярного выражения
--dir <путь>Базовый каталог для поиска тестовых файлов
--uiВключить UI
--openАвтоматически открыть UI (по умолчанию: !process.env.CI)
--api.port [порт]Укажите порт сервера. Обратите внимание, что если порт уже используется, Vite автоматически попытается использовать следующий доступный порт, поэтому это может быть не фактический порт, который прослушивает сервер. Если установлено значение true, будет установлено значение 51204
--api.host [хост]Укажите, какие IP-адреса должен прослушивать сервер. Установите значение 0.0.0.0 или true, чтобы прослушивать все адреса, включая LAN и общедоступные адреса
--api.strictPortУстановите значение true, чтобы выйти, если порт уже используется, вместо автоматической попытки использовать следующий доступный порт
--silentОтключить вывод в консоль от тестов
--hideSkippedTestsСкрыть логи для пропущенных тестов
--reporter <имя>Укажите репортеры
--outputFile <имя_файла/-s>Записать результаты тестов в файл, если также указан поддерживаемый репортер, используйте нотацию точек cac для отдельных выходных данных нескольких репортеров (пример: --outputFile.tap=./tap.txt)
--coverage.allСледует ли включать все файлы, в том числе не охваченные тестами, в отчет
--coverage.provider <имя>Выберите инструмент для сбора данных о покрытии, доступны значения: "v8", "istanbul" и "custom"
--coverage.enabledВключает сбор данных о покрытии. Может быть переопределен с помощью опции CLI --coverage (по умолчанию: false)
--coverage.include <шаблон>Файлы, включенные в покрытие, в виде шаблонов glob. Может быть указано несколько раз при использовании нескольких шаблонов (по умолчанию: **)
--coverage.exclude <шаблон>Файлы, которые нужно исключить из покрытия. Может быть указано несколько раз при использовании нескольких расширений (по умолчанию: см. coverage.exclude)
--coverage.extension <расширение>Расширение, которое нужно включить в покрытие. Может быть указано несколько раз при использовании нескольких расширений (по умолчанию: [".js", ".cjs", ".mjs", ".ts", ".mts", ".cts", ".tsx", ".jsx", ".vue", ".svelte"])
--coverage.cleanОчистить результаты покрытия перед запуском тестов (по умолчанию: true)
--coverage.cleanOnRerunОчистить отчет о покрытии при повторном запуске в режиме наблюдения (по умолчанию: true)
--coverage.reportsDirectory <путь>Каталог для записи отчета о покрытии (по умолчанию: ./coverage)
--coverage.reporter <имя>Репортеры покрытия для использования. См. coverage.reporter для получения дополнительной информации (по умолчанию: ["text", "html", "clover", "json"])
--coverage.reportOnFailureСоздавать отчет о покрытии, даже если тесты не пройдены (по умолчанию: false)
--coverage.allowExternalСобирать покрытие файлов вне корневого каталога проекта (по умолчанию: false)
--coverage.skipFullНе показывать файлы со 100% покрытием операторов, ветвей и функций (по умолчанию: false)
--coverage.thresholds.100Сокращение для установки всех порогов покрытия на 100 (по умолчанию: false)
--coverage.thresholds.perFileПроверять пороги для каждого файла. См. --coverage.thresholds.lines, --coverage.thresholds.functions, --coverage.thresholds.branches и --coverage.thresholds.statements для фактических пороговых значений (по умолчанию: false)
--coverage.thresholds.autoUpdateОбновить пороговые значения: "lines", "functions", "branches" и "statements" в файле конфигурации, когда текущее покрытие выше настроенных порогов (по умолчанию: false)
--coverage.thresholds.lines <число>Порог для строк. См. istanbuljs для получения дополнительной информации. Этот параметр недоступен для пользовательских провайдеров
--coverage.thresholds.functions <число>Порог для функций. См. istanbuljs для получения дополнительной информации. Этот параметр недоступен для пользовательских провайдеров
--coverage.thresholds.branches <число>Порог для ветвей. См. istanbuljs для получения дополнительной информации. Этот параметр недоступен для пользовательских провайдеров
--coverage.thresholds.statements <число>Порог для операторов. См. istanbuljs для получения дополнительной информации. Этот параметр недоступен для пользовательских провайдеров
--coverage.ignoreClassMethods <имя>Массив имен методов классов, которые нужно игнорировать для покрытия. См. istanbuljs для получения дополнительной информации. Этот параметр доступен только для провайдеров istanbul (по умолчанию: [])
--coverage.processingConcurrency <число>Предел параллелизма, используемый при обработке результатов покрытия. (по умолчанию минимальное значение между 20 и количеством ЦП)
--coverage.customProviderModule <путь>Указывает имя модуля или путь для пользовательского модуля провайдера покрытия. См. Custom Coverage Provider для получения дополнительной информации. Этот параметр доступен только для пользовательских провайдеров
--coverage.watermarks.statements <watermarks>Верхние и нижние водяные знаки для операторов в формате <high>,<low>
--coverage.watermarks.lines <watermarks>Верхние и нижние водяные знаки для строк в формате <high>,<low>
--coverage.watermarks.branches <watermarks>Верхние и нижние водяные знаки для ветвей в формате <high>,<low>
--coverage.watermarks.functions <watermarks>Верхние и нижние водяные знаки для функций в формате <high>,<low>
--mode <имя>Переопределить режим Vite (по умолчанию: test или benchmark)
--workspace <путь>Путь к файлу конфигурации рабочей области
--isolateЗапускать каждый тестовый файл изолированно. Чтобы отключить изоляцию, используйте --no-isolate (по умолчанию: true)
--globalsВнедрить API глобально
--domИмитировать API браузера с помощью happy-dom
--browser.enabledЗапускать тесты в браузере. Эквивалентно --browser.enabled (по умолчанию: false)
--browser.name <имя>Запускать все тесты в определенном браузере. Некоторые браузеры доступны только для определенных провайдеров (см. --browser.provider). См. browser.name для получения дополнительной информации
--browser.headlessЗапускать браузер в безголовом режиме (т.е. без открытия графического интерфейса пользователя (GUI)). Если вы запускаете Vitest в CI, он будет включен по умолчанию (по умолчанию: process.env.CI)
--browser.api.port [порт]Укажите порт сервера. Обратите внимание, что если порт уже используется, Vite автоматически попытается использовать следующий доступный порт, поэтому это может быть не фактический порт, который прослушивает сервер. Если установлено значение true, будет установлено значение 63315
--browser.api.host [хост]Укажите, какие IP-адреса должен прослушивать сервер. Установите значение 0.0.0.0 или true, чтобы прослушивать все адреса, включая LAN и общедоступные адреса
--browser.api.strictPortУстановите значение true, чтобы выйти, если порт уже используется, вместо автоматической попытки использовать следующий доступный порт
--browser.provider <имя>Провайдер, используемый для запуска тестов в браузере. Некоторые браузеры доступны только для определенных провайдеров. Может быть "webdriverio", "playwright" или путь к пользовательскому провайдеру. См. browser.provider для получения дополнительной информации (по умолчанию: "webdriverio")
--browser.providerOptions <параметры>Параметры, которые передаются провайдеру браузера. См. browser.providerOptions для получения дополнительной информации
--browser.slowHijackESMПозволить Vitest использовать собственное разрешение модуля в браузере, чтобы включить API, такие как vi.mock и vi.spyOn. См. browser.slowHijackESM для получения дополнительной информации (по умолчанию: false)
--browser.isolateЗапускать каждый тестовый файл браузера изолированно. Чтобы отключить изоляцию, используйте --browser.isolate=false (по умолчанию: true)
--browser.fileParallelismДолжны ли все тестовые файлы запускаться параллельно. Используйте --browser.file-parallelism=false, чтобы отключить (по умолчанию: то же, что и --file-parallelism)
--pool <пул>Укажите пул, если он не запущен в браузере (по умолчанию: threads)
--poolOptions.threads.isolateИзолировать тесты в пуле потоков (по умолчанию: true)
--poolOptions.threads.singleThreadЗапускать тесты в одном потоке (по умолчанию: false)
--poolOptions.threads.maxThreads <работники>Максимальное количество потоков для запуска тестов
--poolOptions.threads.minThreads <работники>Минимальное количество потоков для запуска тестов
--poolOptions.threads.useAtomicsИспользовать Atomics для синхронизации потоков. Это может улучшить производительность в некоторых случаях, но может вызвать ошибку сегментации в старых версиях Node (по умолчанию: false)
--poolOptions.vmThreads.isolateИзолировать тесты в пуле потоков (по умолчанию: true)
--poolOptions.vmThreads.singleThreadЗапускать тесты в одном потоке (по умолчанию: false)
--poolOptions.vmThreads.maxThreads <работники>Максимальное количество потоков для запуска тестов
--poolOptions.vmThreads.minThreads <работники>Минимальное количество потоков для запуска тестов
--poolOptions.vmThreads.useAtomicsИспользовать Atomics для синхронизации потоков. Это может улучшить производительность в некоторых случаях, но может вызвать ошибку сегментации в старых версиях Node (по умолчанию: false)
--poolOptions.vmThreads.memoryLimit <предел>Ограничение памяти для пула потоков VM. Если вы видите утечки памяти, попробуйте изменить это значение.
--poolOptions.forks.isolateИзолировать тесты в пуле форков (по умолчанию: true)
--poolOptions.forks.singleForkЗапускать тесты в одном дочернем процессе (по умолчанию: false)
--poolOptions.forks.maxForks <работники>Максимальное количество процессов для запуска тестов
--poolOptions.forks.minForks <работники>Минимальное количество процессов для запуска тестов
--poolOptions.vmForks.isolateИзолировать тесты в пуле форков (по умолчанию: true)
--poolOptions.vmForks.singleForkЗапускать тесты в одном дочернем процессе (по умолчанию: false)
--poolOptions.vmForks.maxForks <работники>Максимальное количество процессов для запуска тестов
--poolOptions.vmForks.minForks <работники>Минимальное количество процессов для запуска тестов
--poolOptions.vmForks.memoryLimit <предел>Ограничение памяти для пула форков VM. Если вы видите утечки памяти, попробуйте изменить это значение.
--fileParallelismДолжны ли все тестовые файлы запускаться параллельно. Используйте --no-file-parallelism, чтобы отключить (по умолчанию: true)
--maxWorkers <работники>Максимальное количество рабочих для запуска тестов
--minWorkers <работники>Минимальное количество рабочих для запуска тестов
--environment <имя>Укажите среду запуска, если она не запущена в браузере (по умолчанию: node)
--passWithNoTestsПройти, если тесты не найдены
--logHeapUsageПоказывать размер кучи для каждого теста при запуске в node
--allowOnlyРазрешить тесты и наборы, помеченные как only (по умолчанию: !process.env.CI)
--dangerouslyIgnoreUnhandledErrorsИгнорировать любые необработанные ошибки, которые происходят
--shard <shards>Сегмент набора тестов для выполнения в формате <index>/<count>
--changed [since]Запускать тесты, на которые повлияли измененные файлы (по умолчанию: false)
--sequence.shuffle.filesЗапускать файлы в случайном порядке. Долго выполняемые тесты не начнутся раньше, если вы включите этот параметр. (по умолчанию: false)
--sequence.shuffle.testsЗапускать тесты в случайном порядке (по умолчанию: false)
--sequence.concurrentЗапускать тесты параллельно (по умолчанию: false)
--sequence.seed <seed>Установите начальное число для рандомизации. Этот параметр не действует, если --sequence.shuffle имеет ложное значение. См. "Random Seed" page для получения дополнительной информации
--sequence.hooks <order>Изменяет порядок выполнения перехватчиков. Допустимые значения: "stack", "list" и "parallel". См. sequence.hooks для получения дополнительной информации (по умолчанию: "parallel")
--sequence.setupFiles <order>Изменяет порядок выполнения файлов настройки. Допустимые значения: "list" и "parallel". Если установлено значение "list", файлы настройки будут выполняться в том порядке, в котором они определены. Если установлено значение "parallel", файлы настройки будут выполняться параллельно (по умолчанию: "parallel")
--inspect [[host:]port]Включить инспектор Node.js (по умолчанию: 127.0.0.1:9229)
--inspectBrk [[host:]port]Включить инспектор Node.js и остановиться перед запуском теста
--testTimeout <timeout>Тайм-аут теста по умолчанию в миллисекундах (по умолчанию: 5000)
--hookTimeout <timeout>Тайм-аут перехватчика по умолчанию в миллисекундах (по умолчанию: 10000)
--bail <число>Остановить выполнение теста, когда заданное количество тестов не пройдено (по умолчанию: 0)
--retry <times>Повторить тест указанное количество раз, если он не пройден (по умолчанию: 0)
--diff <путь>Путь к конфигурации diff, которая будет использоваться для создания интерфейса diff
--exclude <glob>Дополнительные шаблоны glob, которые нужно исключить из теста
--expandSnapshotDiffПоказать полные различия, когда снимок не пройден
--disableConsoleInterceptОтключить автоматический перехват ведения журнала консоли (по умолчанию: false)
--typecheck.enabledВключить проверку типов вместе с тестами (по умолчанию: false)
--typecheck.onlyЗапускать только тесты проверки типов. Это автоматически включает проверку типов (по умолчанию: false)
--typecheck.checker <имя>Укажите средство проверки типов для использования. Доступны значения: "tcs" и "vue-tsc" и путь к исполняемому файлу (по умолчанию: "tsc")
--typecheck.allowJsРазрешить проверку типов файлов JavaScript. По умолчанию берет значение из tsconfig.json
--typecheck.ignoreSourceErrorsИгнорировать ошибки типов из исходных файлов
--typecheck.tsconfig <путь>Путь к пользовательскому файлу tsconfig
--project <имя>Имя проекта для запуска, если вы используете функцию Vitest workspace. Это можно повторить для нескольких проектов: --project=1 --project=2. Вы также можете фильтровать проекты, используя подстановочные знаки, такие как --project=packages*
--slowTestThreshold <порог>Порог в миллисекундах, при котором тест считается медленным (по умолчанию: 300)
--teardownTimeout <тайм-аут>Тайм-аут функции завершения по умолчанию в миллисекундах (по умолчанию: 10000)
--maxConcurrency <число>Максимальное количество параллельных тестов в наборе (по умолчанию: 5)
--runОтключить режим наблюдения
--segfaultRetry <times>Повторить запуск набора тестов, если он завершается сбоем из-за ошибки сегментации (по умолчанию: true)
--no-colorУдаляет цвета из вывода консоли
--clearScreenОчистить экран терминала при повторном запуске тестов в режиме наблюдения (по умолчанию: true)
--standaloneЗапустить Vitest без запуска тестов. Фильтры файлов будут игнорироваться, тесты будут запускаться только при изменении (по умолчанию: false)

TIP

Vitest поддерживает как camelCase, так и kebab-case для аргументов командной строки. Например, --passWithNoTests и --pass-with-no-tests будут работать одинаково (--no-color и --inspect-brk являются исключениями).

Vitest также поддерживает различные способы указания значения: --reporter dot и --reporter=dot оба допустимы.

Если опция поддерживает массив значений, вам нужно передать опцию несколько раз:

vitest --reporter=dot --reporter=default

Логические опции можно отрицать с помощью префикса no-. Указание значения как false также работает:

vitest --no-api
vitest --api=false

changed ​

  • Тип: boolean | string

  • По умолчанию: false

    Запускает тесты только для измененных файлов. Если значение не указано, будут запущены тесты для незафиксированных изменений (включая подготовленные и неподготовленные).

    Чтобы запустить тесты для изменений, внесенных в последний коммит, можно использовать --changed HEAD~1. Вы также можете передать хеш коммита (например, --changed 09a9920) или имя ветки (например, --changed origin/develop).

    При использовании с покрытием кода отчет будет содержать только файлы, связанные с изменениями.

    В сочетании с параметром конфигурации forceRerunTriggers весь набор тестов будет запущен, если изменится хотя бы один из файлов, указанных в списке forceRerunTriggers. По умолчанию изменения в файле конфигурации Vitest и в package.json всегда будут перезапускать весь набор.

shard ​

  • Тип: string

  • По умолчанию: отключено

    Разделяет набор тестов на части (шарды) для параллельного выполнения. Формат: <index>/<count>, где:

    • count - это положительное целое число, общее количество шардов
    • index - это положительное целое число, индекс текущего шарда (начиная с 1)

    Эта команда разделит все тесты на count равных частей и выполнит только те, которые принадлежат шарду с индексом index. Например, чтобы разделить набор тестов на три части, используйте следующее:

    sh
    vitest run --shard=1/3
    vitest run --shard=2/3
    vitest run --shard=3/3

WARNING

Эта опция несовместима с включенным режимом --watch (который включен по умолчанию в режиме разработки).

Pager
Предыдущая страницаРабочая область
Следующая страницаФильтрация тестов

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team

https://v1.vitest.dev/guide/cli

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team