Perché Vitest
NOTA
Questa guida presuppone una familiarità con Vite. Per approfondire, si consiglia di leggere la Guida Perché Vite e di guardare Strumenti frontend di nuova generazione con ViteJS, uno streaming in cui Evan You ha presentato e spiegato i concetti chiave.
La necessità di un Test Runner nativo di Vite
Il supporto nativo di Vite per i modelli web comuni, funzionalità come le importazioni glob e le primitive SSR, insieme ai suoi numerosi plugin e integrazioni, stanno alimentando un ecosistema vivace. Il suo approccio allo sviluppo e alla build è fondamentale per il suo successo. Per la documentazione, esistono diverse alternative basate su SSG e alimentate da Vite. Tuttavia, l'approccio di Vite ai test unitari non è stato finora ben definito. Le opzioni esistenti, come Jest, sono state create in un contesto diverso. C'è molta duplicazione tra Jest e Vite, costringendo gli utenti a configurare due pipeline distinte.
L'utilizzo del server di sviluppo Vite per trasformare i file durante il testing consente di creare un runner semplice che non deve gestire la complessità della trasformazione dei file sorgente e può concentrarsi unicamente sul fornire la migliore esperienza di sviluppo (DX) durante il testing. È un test runner che utilizza la stessa configurazione della tua App (tramite vite.config.js
), condividendo una pipeline di trasformazione comune durante lo sviluppo, la compilazione e il test. È inoltre estensibile con la stessa API dei plugin che consente a te e ai manutentori dei tuoi strumenti di fornire un'integrazione di prima classe con Vite. Uno strumento costruito pensando a Vite fin dall'inizio, sfruttando i suoi miglioramenti in DX, come il suo Hot Module Reload (HMR) istantaneo. Questo è Vitest, un framework di testing di nuova generazione alimentato da Vite.
Data l'enorme adozione di Jest, Vitest fornisce un'API compatibile che ti consente di usarlo come sostituto diretto nella maggior parte dei progetti. Include anche le funzionalità più comuni richieste durante la configurazione dei tuoi test unitari (mocking, snapshot, coverage). Vitest si preoccupa molto delle prestazioni e utilizza i thread dei worker per eseguire il più possibile in parallelo. In alcuni casi, i test sono stati eseguiti un ordine di grandezza più velocemente. La modalità watch è abilitata per impostazione predefinita, allineandosi al modo in cui Vite promuove un'esperienza incentrata sullo sviluppo. Anche con tutti questi miglioramenti in DX, Vitest rimane leggero scegliendo attentamente le sue dipendenze (o incorporando direttamente le parti necessarie).
Vitest mira a posizionarsi come il Test Runner preferito per i progetti Vite, e come una valida alternativa anche per i progetti che non utilizzano Vite.
Continua a leggere nella Guida introduttiva
In cosa Vitest è diverso da X?
Puoi consultare la sezione Confronti per maggiori dettagli su come Vitest differisce da altri strumenti simili.