← Cloudflare Workers / workers / testing / vitest-integration
Izolace a souběžnost
Zjistěte, jak integrace Workers Vitest spouští vaše testy, jak izoluje testy od sebe navzájem a jak importuje moduly.
Spustit testy
Když spustíte testy s integrací Workers Vitest, Vitest provede následující:
- Přečtěte a vyhodnoťte svůj konfigurační soubor pomocí Node.js.
- Spusťte libovolný
globalSetup↗ soubory pomocí Node.js. - Shromážděte a seřaďte testovací soubory.
- Pro každý projekt Vitest se podle nakonfigurované izolace a souběžnosti spustí jeden nebo více
workerd↗ procesy, z nichž každý spouští jeden nebo více Workerů. - Spustit
setupFiles↗ a testovací soubory vworkerdpomocí příslušných Workers. - Sleduje změny a znovu spouští testovací soubory pomocí stejných Workerů, pokud se konfigurace nezměnila.
Izolační model
Izolace úložiště je podle testovacího souboru. Každý testovací soubor má vlastní prostředí úložiště a zápisy do úložiště provedené během jednoho testovacího souboru nejsou vidět z ostatních testovacích souborů. Integrace Workers Vitest podle možností znovu využívá Workers a jejich cache modulů mezi jednotlivými testovacími běhy. Kopie všech pomocných workers existuje v každém workerd proces.
Ve výchozím nastavení se testovací soubory spouštějí souběžně. Aby testovací soubory sdílely stejné úložiště (například u integračních testů závislých na sdíleném stavu), použijte příznaky Vitest --max-workers=1 --no-isolate.
Moduly
Každý Worker má vlastní cache modulů. Protože se Workery mezi testovacími běhy znovu používají, znovu se používají i jejich cache modulů. Vitest na začátku každého testovacího běhu invaliduje části cache modulů na základě změněných souborů.
Plugin Workers Vitest spouští kód uvnitř Cloudflare Workeru, zatímco Vitest by ho běžně spouštěl uvnitř Vlákno Node.js Worker ↗. Aby to bylo možné, plugin automaticky vkládá nodejs_compat, [no_nodejs_compat_v2] a export_commonjs_default příznaky kompatibility. Jde o minimální nastavení kompatibility, při kterém Vitest ještě funguje správně, aniž by se načítaly nepotřebné polyfills a globální proměnné. Pokud už máte v konfiguraci definovaný příznak kompatibility pro Node.js, plugin Vitest tyto příznaky nepřidává.