Jest und Vitest: JavaScript-Tests schreiben
Kurz: Jest und Vitest führen JavaScript- und TypeScript-Tests aus, bieten Mocks, Schnappschüsse und Abdeckung; Vitest ist besonders schnell und passt zu Vite-Projekten.
Genauer: Beide Werkzeuge haben fast dieselbe Schreibweise mit describe, test/it und expect. Jest (Meta) ist lange Standard, vor allem bei React; Vitest ist ein jüngeres, sehr schnelles Framework mit Vite-Unterstützung, ESM und TypeScript ohne zusätzliche Konfiguration.
Im Detail
Ein Test
// summe.js
export const summe = (a, b) => a + b;
// summe.test.js
import { describe, it, expect } from 'vitest'; // bei Jest: global
import { summe } from './summe.js';
describe('summe', () => {
it('addiert zwei Zahlen', () => {
expect(summe(2, 3)).toBe(5);
});
it('geht mit negativen Zahlen um', () => {
expect(summe(-1, -1)).toBe(-2);
});
});Start: npx vitest bzw. npx jest (im Watch-Modus laufen geänderte Tests automatisch erneut).
Wichtige Funktionen
- Matcher:
toBe,toEqual,toContain,toThrow,toBeNull,toHaveLength,resolves/rejectsfür Promises. - Mocks und Spies:
vi.fn()/jest.fn(),vi.mock('modul'), Zeit steuern mituseFakeTimers. - Snapshot-Tests: Ausgabe wird gespeichert und bei Änderungen verglichen.
- Hooks:
beforeEach,afterEach. - Abdeckung:
--coverage. - Asynchrones:
async/awaitdirekt im Test. - UI-Tests: React Testing Library, Vue Test Utils (prüfen, was Nutzer sehen), mit
jsdomals simulierter Browser.
Vergleich
- Vitest: schneller Start, nutzt dieselbe Konfiguration wie Vite, ESM-nativ, Jest-kompatible API.
- Jest: sehr verbreitet, große Ökosystem-Basis, teils komplizierter bei ESM/TypeScript (Babel/ts-jest).
- Node-eigener Test-Runner (
node --test) für kleine Projekte ohne Abhängigkeiten. - Für Browser-Tests Playwright oder Cypress.
Gute Praxis
Teste Verhalten, nicht Implementierungsdetails. Eine klare Struktur Arrange – Act – Assert. Halte Tests schnell und unabhängig, mocke nur Grenzen (Netzwerk, Zeit, Datenbank). Unterschätze Snapshot-Tests nicht: zu große Schnappschüsse werden blind akzeptiert. Führe Tests in der CI aus und halte sie grün.
Siehe auch: Unit-Test, Mocking und Test-Doubles, Snapshot-Tests, Playwright