Skip to content
Vitest 0
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-функции

Vi

expect

expectTypeOf

assertType

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

Настройка Vitest

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

Рабочее пространство ​

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

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

Рабочее пространство должно иметь файл 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 предоставляет приятный DX (Developer Experience) благодаря подсказкам типов
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'],
  },
});

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

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

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

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

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

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

TIP

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

Покрытие ​

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

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

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

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

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

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

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

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