Документация Запланировать пилот

Изоляция и параллелизм

Узнайте, как интеграция Workers с Vitest запускает ваши тесты, изолирует их друг от друга и импортирует модули.

Запустить тесты

Когда вы запускаете тесты с интеграцией Workers Vitest, Vitest выполнит следующее:

  1. Считывает и выполняет ваш файл конфигурации с помощью Node.js.
  2. Выполните любую globalSetup ↗ файлы с помощью Node.js.
  3. Сбор и упорядочивание тестовых файлов.
  4. Для каждого проекта Vitest, в зависимости от настроенной изоляции и параллелизма, запускается один или несколько workerd ↗ процессов, каждый из которых выполняет один или несколько Workers.
  5. Запустите setupFiles ↗ и тестовые файлы в workerd с помощью соответствующих Workers.
  6. Отслеживайте изменения и повторно запускайте тестовые файлы, используя те же Workers, если конфигурация не изменилась.

Модель изоляции

Изоляция хранилища выполняется на уровне тестового файла. Каждый тестовый файл получает собственную среду хранения, и любые записи в хранилище в рамках одного тестового файла не видны другим тестовым файлам. Интеграция Workers с Vitest по возможности повторно использует Workers и их кеши модулей между запусками тестов. Копия всех вспомогательных workers существует в каждом workerd процесс.

По умолчанию тестовые файлы выполняются параллельно. Чтобы тестовые файлы использовали общее хранилище (например, для интеграционных тестов, зависящих от общего состояния), используйте флаги Vitest --max-workers=1 --no-isolate.

Модули

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

Плагин Workers Vitest выполняет код внутри Cloudflare Worker, который Vitest обычно запускал бы внутри Node.js Worker thread ↗. Чтобы это стало возможным, плагин автоматически внедряет nodejs_compat, [no_nodejs_compat_v2] и export_commonjs_default флаги совместимости. Это минимальная настройка совместимости, при которой Vitest всё ещё работает корректно, но без лишних полифилов и глобальных объектов. Если в конфигурации уже указан флаг совместимости с Node.js, плагин Vitest не добавляет эти флаги повторно.

Запросите бесплатный пилот

Запланировать пилот