Qu'est-ce que Vitest et pourquoi en avez-vous besoin ?
Vitest est une bibliothèque moderne de tests unitaires, conçue pour l'écosystème Vite et TypeScript. Elle a été créée comme une alternative rapide à Jest, mais avec un support complet de TypeScript « prêt à l'emploi » sans configuration supplémentaire. Vitest utilise l'analyseur natif de TypeScript et le système de modules de Vite, ce qui rend les tests instantanés même dans les grands projets.
Installation
Installez Vitest dans votre projet TypeScript via npm :
npm install -D vitestDe plus, si vous utilisez React ou Vue, installez les utilitaires associés :
npm install -D @testing-library/react @testing-library/jest-domFonctionnalités principales
- Vitesse : les tests s'exécutent en parallèle en utilisant des workers, ce qui accélère l'exécution jusqu'à 10 fois par rapport à Jest.
- Compatibilité avec TypeScript : ne nécessite ni ts-jest ni babel — fonctionne directement avec les fichiers .ts et .tsx.
- Mocks et espions intégrés : fonctions vi.mock, vi.spyOn et vi.fn pour l'isolation du code.
- Snapshot testing : possibilité de sauvegarder et de comparer des instantanés de composants ou de données.
- Couverture (Coverage) : support intégré de c8 ou istanbul pour les rapports de couverture de code.
Exemple de code en TypeScript
Écrivons un test pour une simple fonction d'addition :
// math.tsexport function add(a: number, b: number): number { return a + b;}
// math.test.tsimport { describe, it, expect } from 'vitest';import { add } from './math';
describe('add function', () => { it('should add two positive numbers', () => { expect(add(2, 3)).toBe(5); });
it('should handle negative numbers', () => { expect(add(-1, 1)).toBe(0); });
it('should return zero for zero arguments', () => { expect(add(0, 0)).toBe(0); });});Exécution des tests :
npx vitestVitest trouvera automatiquement tous les fichiers avec l'extension .test.ts ou .spec.ts.
Quand l'utiliser
Vitest est idéal pour :
- Les nouveaux projets sur Vite : intégration instantanée sans configuration.
- La migration depuis Jest : Vitest possède une API similaire, ce qui facilite la transition.
- Le test de bibliothèques TypeScript : support complet des décorateurs, des génériques et des types complexes.
- Les pipelines CI/CD : une vitesse d'exécution élevée permet de gagner du temps dans les builds automatiques.
Évitez Vitest si votre projet nécessite d'anciennes versions de Node.js (inférieures à 14) ou si vous utilisez des plugins Jest spécifiques incompatibles avec Vite.
Conclusion
Vitest est un outil de test moderne, rapide et convivial pour TypeScript. Il élimine de nombreux inconvénients de Jest, tels que le démarrage lent et la configuration complexe de TypeScript. Si vous travaillez avec TypeScript et que vous appréciez la rapidité de développement, Vitest sera un excellent choix.