Alternative: Unit-Tests mit node:test (optional)
Dauer: 10 Minuten
Ziel: Verstehen, wann node:test als schlanke Alternative zu Vitest sinnvoll ist
Diese Lektion ist optional. Der Hauptpfad im Kurs bleibt Unit-Testing mit Vitest.
Wann ist node:test sinnvoll?
node:test ist der eingebaute Test Runner von Node.js
(ab Node 18, stabil seit Node 20). Er ist besonders praktisch, falls:
- keine zusätzlichen Test-Abhängigkeiten gewünscht sind,
- ein sehr kleines Projekt oder Skript getestet werden soll,
- schnell ein Minimal-Setup-Check durchgeführt werden soll.
Für unser TUI-Projekt mit TypeScript bleibt Vitest in der Regel die bessere Standardwahl.
Minimal-Setup
In package.json:
{
"scripts": {
"test:node": "node --test"
}
}Beispiel:
// sum.js
export function sum(a, b) {
return a + b;
}// sum.test.js
import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { sum } from './sum.js';
describe('sum', () => {
it('addiert zwei Zahlen', () => {
assert.strictEqual(sum(2, 3), 5);
});
});Ausführen:
npm run test:nodeSchnellvergleich zu Vitest
| Thema | node:test | Vitest |
|---|---|---|
| Installation | keine extra Test-Bibliothek | npm i -D vitest |
| Assertions | assert.* | expect(...) |
| Watch/Ökosystem | schlank, weniger Komfortfunktionen | mehr Komfort (z. B. Watch-Workflow) |
| Empfehlung im Kurs | optional | Standard |
API-Mapping (hilft beim Lesen beider Stile)
| Konzept | node:test | Vitest |
|---|---|---|
| Test-Suite | describe(...) | describe(...) |
| Einzeltest | it(...) | it(...) |
| Gleichheit | assert.strictEqual(a, b) | expect(a).toBe(b) |
| Fehler erwarten | assert.throws(fn) | expect(fn).toThrow() |
Die Grundkonzepte von node:test und Vitest sind sehr ähnlich.