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

API

Node API

Расширенный API

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

API плагина

Runner API

Репортеры

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

Руководство

Запуск тестов

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

Пользовательский пул

Настройка Vitest

Справочник по API тестирования

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

API плагина 3.1.0+ ​

WARNING

Это продвинутый API. Если вы просто хотите запустить тесты, вам, вероятно, это не нужно. Он в основном используется авторами библиотек.

Это руководство предполагает, что вы умеете работать с плагинами Vite.

Vitest поддерживает экспериментальный хук плагина configureVitest начиная с версии 3.1. Любые отзывы об этом API приветствуются на GitHub.

ts
import type { Vite, VitestPluginContext } from 'vitest/node';

export function plugin(): Vite.Plugin {
  return {
    name: 'vitest:my-plugin',
    configureVitest(context: VitestPluginContext) {
      // ...
    },
  };
}
ts
/// <reference types="vitest/config" />

import type { Plugin } from 'vite';

export function plugin(): Plugin {
  return {
    name: 'vitest:my-plugin',
    transform() {
      // ...
    },
    configureVitest(context) {
      // ...
    },
  };
}

TypeScript

Vitest реэкспортирует все типовые импорты Vite через пространство имён Vite, которое вы можете использовать для синхронизации версий. Однако, если вы пишете плагин как для Vite, так и для Vitest, вы можете продолжать использовать тип Plugin из точки входа Vite. Просто убедитесь, что у вас где-то есть ссылка на vitest/config, чтобы configureVitest был правильно дополнен:

ts
/// <reference types="vitest/config" />

В отличие от reporter.onInit, этот хук выполняется на раннем этапе жизненного цикла Vitest, позволяя вам вносить изменения в такие параметры конфигурации, как coverage и reporters. Важное изменение: вы можете манипулировать глобальной конфигурацией из тестового проекта, если ваш плагин определен в проекте, а не в глобальной конфигурации.

Контекст ​

project ​

Текущий тестовый проект, которому принадлежит плагин.

Browser Mode

Обратите внимание, что если вы полагаетесь на какую-либо функцию браузера, поле project.browser еще не установлено. Вместо этого используйте событие reporter.onBrowserInit.

vitest ​

Глобальный экземпляр Vitest. Вы можете изменить глобальную конфигурацию, прямо изменяя свойство vitest.config:

ts
vitest.config.coverage.enabled = false;
vitest.config.reporters.push([['my-reporter', {}]]);

Config is Resolved

Обратите внимание, что Vitest уже обработал конфигурацию, поэтому некоторые типы могут отличаться от обычной пользовательской конфигурации. Это также означает, что некоторые свойства не будут обработаны снова, например setupFile. Если вы добавляете новые файлы, убедитесь, что вы сначала разрешили их.

На этом этапе репортеры еще не созданы, поэтому изменение vitest.reporters не окажет никакого эффекта, так как оно будет перезаписано. Если вам нужно внедрить свой собственный репортер, вместо этого измените конфигурацию.

injectTestProjects ​

ts
function injectTestProjects(
  config: TestProjectConfiguration | TestProjectConfiguration[]
): Promise<TestProject[]>;

Этот метод принимает шаблон glob для конфигурации, путь к файлу настроек или встроенные настройки. Он возвращает массив разрешенных тестовых проектов.

ts
// инъекция одиночного проекта с пользовательским псевдонимом
const newProjects = await injectTestProjects({
  // вы можете наследовать текущую конфигурацию проекта, ссылаясь на `extends`
  // учтите, что нельзя иметь проект с именем, которое уже существует,
  // поэтому рекомендуется определить пользовательское имя
  extends: project.vite.config.configFile,
  test: {
    name: 'my-custom-alias',
    alias: {
      customAlias: resolve('./custom-path.js'),
    },
  },
});

Projects are Filtered

Vitest фильтрует проекты во время разрешения конфигурации, поэтому, если пользователь определил фильтр, добавленный проект может быть не разрешен, если он не соответствует фильтру. Вы можете обновить фильтр с помощью опции vitest.config.project, чтобы всегда включать ваш тестовый проект:

ts
vitest.config.project.push('my-project-name');

Обратите внимание, что это затронет только проекты, добавленные методом injectTestProjects.

Referencing the Current Config

Если вы хотите сохранить пользовательскую конфигурацию, вы можете использовать свойство extends. Все остальные свойства будут объединены с конфигурацией, определенной пользователем.

configFile проекта можно получить в конфигурации Vite: project.vite.config.configFile.

Обратите внимание, что это также унаследует свойство name - Vitest не допускает нескольких проектов с одинаковым именем, поэтому это вызовет ошибку. Убедитесь, что вы задали другое имя. Вы можете получить доступ к текущему имени с помощью свойства project.name, а все используемые имена доступны в массиве vitest.projects.

Pager
Предыдущая страницаTestCollection
Следующая страницаRunner API

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

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

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

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

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