Warum Vitest
HINWEIS
Dieser Leitfaden setzt voraus, dass Sie mit Vite vertraut sind. Ein guter Ausgangspunkt ist das Lesen des Warum Vite Leitfadens und Next generation frontend tooling with ViteJS, einem Livestream, in dem Evan You die Hauptkonzepte demonstrierte.
Die Notwendigkeit eines Vite-nativen Test-Runners
Vite bietet native Unterstützung für gängige Web-Patterns, Funktionen wie Glob-Imports und SSR-Primitive sowie zahlreiche Plugins und Integrationen, die ein lebendiges Ökosystem fördern. Sein Entwicklungs- und Build-Ansatz ist entscheidend für seinen Erfolg. Für Dokumentationen gibt es bereits mehrere SSG-basierte Alternativen, die auf Vite aufbauen. Vites Ansatz für Unit-Tests war jedoch bisher nicht klar definiert. Bestehende Optionen wie Jest wurden in einem anderen Kontext entwickelt. Dies führt oft zu Redundanzen zwischen Jest und Vite, was Benutzer dazu zwingt, zwei verschiedene Pipelines zu konfigurieren.
Durch die Nutzung des Vite-Dev-Servers zur Transformation Ihrer Dateien während des Testens kann ein einfacher Test-Runner realisiert werden. Dieser muss sich nicht mit der Komplexität der Quellcode-Transformation befassen und kann sich ausschließlich auf die Bereitstellung der besten DX (Developer Experience) während des Testens konzentrieren. Dieser Test-Runner verwendet dieselbe Konfiguration Ihrer Anwendung (über vite.config.js
) und teilt eine gemeinsame Transformationspipeline für Entwicklung, Build und Tests. Er ist erweiterbar mit derselben Plugin-API, die Ihnen und den Betreuern Ihrer Tools eine erstklassige Integration mit Vite ermöglicht. Vitest ist ein Tool, das von Anfang an mit Vite im Hinterkopf entwickelt wurde und dessen Verbesserungen in der DX, wie z.B. das sofortige Hot Module Reload (HMR), voll ausschöpft. Dies ist Vitest, ein Test-Framework der nächsten Generation, das auf Vite basiert.
Angesichts der weiten Verbreitung von Jest bietet Vitest eine kompatible API, die es Ihnen ermöglicht, es in den meisten Projekten als direkten Ersatz zu verwenden. Es enthält auch die gängigsten Funktionen, die für die Einrichtung Ihrer Unit-Tests erforderlich sind (Mocking, Snapshots, Coverage). Vitest legt großen Wert auf Leistung und nutzt Worker-Threads, um so viel wie möglich parallel auszuführen. Bei einigen Migrationen wurden Testläufe um eine Größenordnung beschleunigt. Der Watch-Modus ist standardmäßig aktiviert, was dem von Vite geförderten "Dev-First"-Ansatz entspricht. Selbst mit all diesen Verbesserungen der DX bleibt Vitest leichtgewichtig, indem es seine Abhängigkeiten sorgfältig auswählt (oder benötigte Teile direkt einbindet).
Vitest zielt darauf ab, sich als der bevorzugte Test-Runner für Vite-Projekte und als solide Alternative auch für Projekte, die Vite nicht verwenden, zu positionieren.
Weiter geht's im Leitfaden für erste Schritte
Wie unterscheidet sich Vitest von X?
Genauere Informationen dazu, wie sich Vitest von anderen ähnlichen Tools unterscheidet, finden Sie im Abschnitt Vergleiche.