Улучшение производительности
По умолчанию Vitest запускает каждый тестовый файл в изолированной среде, используя пул:
- Пул
threads
запускает каждый тестовый файл в отдельномWorker
(рабочем потоке). - Пул
forks
запускает каждый тестовый файл в отдельном порожденном дочернем процессе (forked child process). - Пул
vmThreads
запускает каждый тестовый файл в отдельном VM context (VM контексте), но использует workers (рабочие потоки) для параллелизма.
Это может значительно увеличить время выполнения тестов, что нежелательно для проектов, не имеющих побочных эффектов и корректно очищающих состояние (что обычно справедливо для проектов с окружением node
). В этом случае отключение изоляции повысит скорость ваших тестов. Чтобы это сделать, укажите флаг --no-isolate
в CLI или установите свойство test.isolate
в false
в конфигурации. Если вы используете несколько пулов одновременно с опцией poolMatchGlobs
, вы также можете отключить изоляцию для конкретного используемого пула.
vitest --no-isolate
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
isolate: false,
// Вы также можете отключить изоляцию только для определенных пулов
poolOptions: {
forks: {
isolate: false,
},
},
},
});
TIP
Если вы используете пул vmThreads
, отключение изоляции невозможно. Для повышения производительности тестов используйте пул threads
.
Для некоторых проектов также может быть полезно отключить параллелизм файлов для сокращения времени инициализации. Чтобы это сделать, передайте флаг --no-file-parallelism
в CLI или установите свойство test.fileParallelism
в false
в конфигурации.
vitest --no-file-parallelism
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
fileParallelism: false,
},
});