← Cloudflare Workers / workers / testing / vitest-integration
Изоляция и параллелизм
Узнайте, как интеграция Workers с Vitest запускает ваши тесты, изолирует их друг от друга и импортирует модули.
Запустить тесты
Когда вы запускаете тесты с интеграцией Workers Vitest, Vitest выполнит следующее:
- Считывает и выполняет ваш файл конфигурации с помощью Node.js.
- Выполните любую
globalSetup↗ файлы с помощью Node.js. - Сбор и упорядочивание тестовых файлов.
- Для каждого проекта Vitest, в зависимости от настроенной изоляции и параллелизма, запускается один или несколько
workerd↗ процессов, каждый из которых выполняет один или несколько Workers. - Запустите
setupFiles↗ и тестовые файлы вworkerdс помощью соответствующих Workers. - Отслеживайте изменения и повторно запускайте тестовые файлы, используя те же 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 не добавляет эти флаги повторно.