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

Отладка

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

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

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

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

API

Справочник по Test API

Mock-функции

Vitest

expect

expectTypeOf

assert

assertType

Конфигурация

Настройка конфигурационного файла Vitest

Настройка Vitest

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

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

Пример проекта

GitHub - Play Online

Vitest предоставляет встроенную поддержку монорепозиториев (monorepos) через файл конфигурации рабочей области. Вы можете создать рабочую область, чтобы определить настройки для каждого проекта в вашем монорепозитории.

Определение рабочей области ​

Рабочая область определяется файлом vitest.workspace или vitest.projects в корневом каталоге (в той же папке, что и ваш основной файл конфигурации, если он существует). Vitest поддерживает расширения ts, js и json для этого файла.

Файл конфигурации рабочей области должен содержать экспорт по умолчанию, представляющий собой список файлов или glob-паттернов, указывающих на ваши проекты. Например, если у вас есть папка packages, содержащая ваши проекты, вы можете определить рабочую область следующим образом:

ts
export default ['packages/*'];

Vitest будет рассматривать каждую папку в packages как отдельный проект, даже если в ней нет собственного файла конфигурации.

WARNING

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

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

ts
export default ['packages/*/vitest.config.{e2e,unit}.ts'];

Этот шаблон включит только проекты с файлом vitest.config, имя которого содержит e2e или unit перед расширением.

WARNING

При использовании glob-паттернов для указания файлов конфигурации убедитесь, что имя файла начинается с vite.config или vitest.config. В противном случае Vitest проигнорирует его.

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

ts
import { defineWorkspace } from 'vitest/config';

// defineWorkspace предоставляет удобный интерфейс с подсказками типов
export default defineWorkspace([
  'packages/*',
  {
    // добавьте "extends", чтобы объединить две конфигурации
    extends: './vite.config.js',
    test: {
      include: ['tests/**/*.{browser}.test.{ts,js}'],
      // рекомендуется указывать имя при использовании встроенных конфигураций
      name: 'happy-dom',
      environment: 'happy-dom',
    },
  },
  {
    test: {
      include: ['tests/**/*.{node}.test.{ts,js}'],
      name: 'node',
      environment: 'node',
    },
  },
]);

WARNING

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

Если вы не используете встроенные конфигурации, можно создать простой JSON-файл в корневом каталоге вашего проекта:

json
["packages/*"]

Проекты рабочей области не поддерживают все свойства конфигурации. Для лучшей типобезопасности используйте метод defineProject вместо defineConfig внутри файлов конфигурации проекта:

ts
import { defineProject } from 'vitest/config';

export default defineProject({
  test: {
    environment: 'jsdom',
    // "reporters" не поддерживается в конфигурации проекта,
    // поэтому будет показана ошибка
    reporters: ['json'],
  },
});

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

Чтобы запустить тесты в рабочей области, определите скрипт в вашем корневом package.json:

json
{
  "scripts": {
    "test": "vitest"
  }
}

Теперь тесты можно запустить с помощью вашего пакетного менеджера:

bash
npm run test
bash
yarn test
bash
pnpm run test
bash
bun test

Если вам нужно запустить тесты только в одном проекте, используйте параметр командной строки --project:

bash
npm run test --project e2e

TIP

Параметр командной строки --project можно использовать несколько раз для фильтрации нескольких проектов:

bash
npm run test --project e2e --project unit

Конфигурация ​

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

ts
import { defineProject, mergeConfig } from 'vitest/config';
import configShared from '../vitest.shared.js';

export default mergeConfig(
  configShared,
  defineProject({
    test: {
      environment: 'jsdom',
    },
  })
);

Кроме того, некоторые опции конфигурации не разрешены в конфигурации проекта. Например:

  • coverage: покрытие кода выполняется для всей рабочей области
  • reporters: поддерживаются только репортеры корневого уровня
  • resolveSnapshotPath: учитывается только resolver корневого уровня
  • все остальные опции, не влияющие на тестовые раннеры.

TIP

Все опции конфигурации, не поддерживаемые в конфигурации проекта, отмечены знаком * на странице "Config".

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

Покрытие кода для проектов рабочей области работает сразу после установки. Но если у вас включена опция all и вы используете нестандартные расширения файлов в некоторых из ваших проектов, вам потребуется плагин, который обрабатывает эти расширения в вашем корневом файле конфигурации.

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

Pager
Предыдущая страницаФункциональность
Следующая страницаИнтерфейс командной строки

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

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

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

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

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