Testen in TypeScript mit Vitest

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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 vitest

Zusätzlich, falls Sie React oder Vue verwenden, installieren Sie die zugehörigen Hilfsprogramme:

npm install -D @testing-library/react @testing-library/jest-dom

Hauptfunktionen

  • 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 vitest

Vitest 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.

Empfehlungen