Skip to content
Vitest 2
Main Navigation РуководствоAPIКонфигурацияРежим браузераПродвинутый
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

Node API

Test Runner

Метаданные задач

Расширение репортеров

Кастомный пул

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

Node API ​

WARNING

Vitest предоставляет экспериментальный приватный API. Возможны нарушения обратной совместимости без соблюдения SemVer, поэтому при использовании этого API рекомендуется зафиксировать версию Vitest.

startVitest ​

Вы можете запустить тесты Vitest, используя Node API:

js
import { startVitest } from 'vitest/node';

const vitest = await startVitest('test');

await vitest?.close();

Функция startVitest возвращает экземпляр Vitest, если запуск тестов возможен. Она возвращает undefined в следующих случаях:

  • Vitest не обнаружил пакет vite (обычно устанавливается вместе с Vitest).
  • Включено покрытие кода и режим запуска "test", но пакет покрытия кода не установлен (@vitest/coverage-v8 или @vitest/coverage-istanbul).
  • Пакет окружения не установлен (jsdom/happy-dom/@edge-runtime/vm).

Если возвращается undefined или тесты завершаются с ошибкой во время запуска, Vitest устанавливает для process.exitCode значение 1.

Если режим наблюдения не включен, Vitest вызывает метод close для завершения работы.

Если режим наблюдения включен и терминал поддерживает TTY, Vitest регистрирует консольные горячие клавиши.

Вы можете указать список фильтров вторым аргументом. Vitest запустит только те тесты, в пути которых содержится хотя бы одна из указанных строк.

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

Альтернативно, вы можете передать полную конфигурацию Vite четвертым аргументом, которая переопределит другие пользовательские параметры.

После запуска тестов вы можете получить результаты из API state.getFiles:

ts
const vitest = await startVitest('test');

console.log(vitest.state.getFiles()); // [{ type: 'file', ... }]

Начиная с Vitest 2.1, рекомендуется использовать API "Reported Tasks" (Отчетные задачи) вместе с state.getFiles. В будущем Vitest будет возвращать эти объекты напрямую:

ts
const vitest = await startVitest('test');

const [fileTask] = vitest.state.getFiles();
const testFile = vitest.state.getReportedEntity(fileTask);

createVitest ​

Вы можете создать экземпляр Vitest, используя функцию createVitest. Она возвращает тот же экземпляр Vitest, что и startVitest, но не запускает тесты и не проверяет установленные пакеты.

js
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test', {
  watch: false,
});

parseCLI ​

Вы можете использовать этот метод для разбора аргументов CLI. Он принимает строку (с аргументами, разделенными пробелами) или массив строк аргументов CLI в формате Vitest CLI. Он возвращает фильтр и options, которые вы можете передать в методы createVitest или startVitest.

ts
import { parseCLI } from 'vitest/node';

parseCLI('vitest ./files.ts --coverage --browser=chrome');

Vitest ​

Экземпляр Vitest требует указания текущего режима тестирования. Возможные режимы:

  • test - для запуска runtime тестов.
  • benchmark - для запуска бенчмарков.

mode ​

test ​

В режиме test вызываются только функции внутри test или it. При обнаружении bench выдается ошибка. Этот режим использует параметры include и exclude в конфигурации для поиска файлов тестов.

benchmark ​

В режиме benchmark вызываются функции bench. При обнаружении test или it выдается ошибка. Этот режим использует параметры benchmark.include и benchmark.exclude в конфигурации для поиска файлов бенчмарков.

start ​

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

provide ​

Vitest предоставляет метод provide, являющийся псевдонимом для vitest.getCoreWorkspaceProject().provide. С помощью этого метода вы можете передавать значения из основного потока в тесты. Все значения проверяются с помощью structuredClone перед сохранением, но сами значения не клонируются.

Чтобы получить значения в тесте, вам нужно импортировать метод inject из точки входа vitest:

ts
import { inject } from 'vitest';
const port = inject('wsPort'); // 3000

Для повышения типобезопасности рекомендуется расширить определение типа ProvidedContext:

ts
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test', {
  watch: false,
});
vitest.provide('wsPort', 3000);

declare module 'vitest' {
  export interface ProvidedContext {
    wsPort: number;
  }
}

WARNING

Технически, provide является методом WorkspaceProject, поэтому он ограничен конкретным проектом. Однако все проекты наследуют значения от основного проекта, что делает vitest.provide универсальным методом передачи значений в тесты.

TIP

Этот метод также доступен для файлов глобальной настройки в случаях, когда вы не хотите использовать публичный API:

js
export default function setup({ provide }) {
  provide('wsPort', 3000);
}
Pager
Следующая страницаTest Runner

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

Авторские права (c) 2024 Mithril Contributors

https://v2.vitest.dev/advanced/api

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

Авторские права (c) 2024 Mithril Contributors