Was ist Vitest und warum wird es benötigt?
Vitest ist eine moderne Bibliothek für Unit-Tests, die auf das Vite- und TypeScript-Ökosystem ausgerichtet ist. Sie wurde als schnelle Alternative zu Jest entwickelt, jedoch mit vollständiger TypeScript-Unterstützung "out of the box" ohne zusätzliche Konfiguration. Vitest nutzt den nativen TypeScript-Parser und das Modulsystem von Vite, was Tests selbst in großen Projekten augenblicklich macht.
Installation
Installieren Sie Vitest in Ihr TypeScript-Projekt über npm:
npm install -D vitestZusätzlich, falls Sie React oder Vue verwenden, installieren Sie die zugehörigen Hilfsprogramme:
npm install -D @testing-library/react @testing-library/jest-domHauptfunktionen
- Geschwindigkeit: Tests werden parallel unter Verwendung von Workern ausgeführt, was die Ausführungszeit im Vergleich zu Jest um bis zu 10-fach beschleunigt.
- TypeScript-Kompatibilität: Erfordert weder ts-jest noch babel – funktioniert direkt mit .ts- und .tsx-Dateien.
- Integrierte Mocks und Spione: Funktionen vi.mock, vi.spyOn und vi.fn zur Isolation von Code.
- Snapshot-Testing: Möglichkeit, Snapshots von Komponenten oder Daten zu speichern und zu vergleichen.
- Coverage: Integrierte Unterstützung für c8 oder istanbul für Codeabdeckungsberichte.
Codebeispiel in TypeScript
Schreiben wir einen Test für eine einfache Additionsfunktion:
// 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); });});Ausführen der Tests:
npx vitestVitest findet automatisch alle Dateien mit der Erweiterung .test.ts oder .spec.ts.
Wann verwenden
Vitest ist ideal geeignet für:
- Neue Projekte auf Vite: Sofortige Integration ohne Konfiguration.
- Migration von Jest: Vitest hat eine ähnliche API, was den Umstieg vereinfacht.
- Testen von TypeScript-Bibliotheken: Vollständige Unterstützung für Dekorateure, Generics und komplexe Typen.
- CI/CD-Pipelines: Hohe Ausführungsgeschwindigkeit spart Zeit bei automatischen Builds.
Vermeiden Sie Vitest, wenn Ihr Projekt alte Node.js-Versionen (unter 14) erfordert oder Sie spezifische Jest-Plugins verwenden, die nicht mit Vite kompatibel sind.
Fazit
Vitest ist ein modernes, schnelles und TypeScript-freundliches Werkzeug für Tests. Es beseitigt viele Nachteile von Jest, wie den langsamen Start und die komplizierte TypeScript-Konfiguration. Wenn Sie mit TypeScript arbeiten und Entwicklungsgeschwindigkeit schätzen, ist Vitest eine ausgezeichnete Wahl.
Auch in der Bibliothek
Burn Rust: Komplettes Tutorial mit Codebeispielen
golangci-lint für Go: Vollständige Anleitung mit Beispielen
Swagger/OpenAPI Generierung auf Kotlin: Werkzeuge und Beispiele