Perché Vitest
NOTA
Questa guida presuppone che tu abbia familiarità con Vite. Un buon modo per iniziare è leggere la Guida al perché di Vite e Strumenti frontend di nuova generazione grazie a ViteJS, uno stream in cui Evan You ha fatto una demo spiegando i concetti principali.
La necessità di un test runner nativo per Vite
Il supporto nativo di Vite per i modelli web comuni, funzionalità come le importazioni glob e le primitive SSR, e i suoi numerosi plugin e integrazioni stanno favorendo un ecosistema vivace. Il processo di sviluppo e build è fondamentale per il suo successo. Per la documentazione, ci sono diverse alternative basate su SSG (Static Site Generation) alimentate da Vite. Tuttavia, la gestione dei test unitari in Vite non è stata altrettanto chiara. Le opzioni esistenti come Jest sono state create in un contesto diverso. C'è molta duplicazione tra Jest e Vite, il che obbliga gli utenti a configurare due pipeline distinte.
Sfruttare il server di sviluppo di Vite per trasformare i tuoi file durante i test permette la creazione di un runner semplice. Questo runner non deve affrontare la complessità della trasformazione dei file sorgente e può concentrarsi esclusivamente sull'offrire la migliore esperienza di sviluppo (DX) durante i test. 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 build e il testing. Questo è estensibile grazie alla stessa API per plugin, consentendo a te e ai manutentori dei tuoi strumenti di fornire un'integrazione di prima classe con Vite. Uno strumento progettato fin dall'inizio pensando a Vite, che sfrutta i suoi miglioramenti nella DX, come il suo Hot Module Reload (HMR) istantaneo. Questo è Vitest, un framework per unit test estremamente veloce alimentato da Vite.
Data la vasta diffusione di Jest, Vitest fornisce un'API compatibile che ti consente di utilizzarlo come sostituto diretto nella maggior parte dei progetti. Include inoltre le funzionalità più comuni necessarie quando si impostano i test unitari (mocking, snapshot e code coverage). Vitest dà grande importanza alle prestazioni e utilizza i Worker threads per eseguire il più possibile in parallelo. In alcuni casi si è osservata un'esecuzione dei test più veloce di un ordine di grandezza. La modalità Watch è abilitata per impostazione predefinita, allineandosi all'obiettivo di Vite di offrire un'esperienza di sviluppo ottimale. Anche con tutti questi miglioramenti nella DX, Vitest rimane leggero scegliendo attentamente le sue dipendenze (o incorporando direttamente i componenti necessari).
Vitest mira a posizionarsi come il Test Runner di riferimento per i progetti Vite e come una valida alternativa anche per i progetti che non utilizzano Vite.
Continua a leggere nella Guida introduttiva
In che modo Vitest è diverso da X?
Puoi consultare la sezione Confronti per maggiori dettagli su come Vitest differisce da altri strumenti simili.