Warum TypeScript-Testen nicht beängstigend, sondern vorteilhaft ist
\n\nSie haben eine tolle Funktion in TypeScript geschrieben, das Projekt gestartet – alles funktioniert. Eine Woche später fügen Sie eine neue Funktion hinzu, und die alte Logik ist kaputt. Kommt Ihnen das bekannt vor? Wenn ja, dann müssen Sie sich dringend mit dem Testen anfreunden. Und haben Sie keine Angst: Tests sind keine langweilige Pflicht, sondern Ihr persönlicher "Bug-Detektor", der 24/7 arbeitet.
\n\nIn diesem Artikel schauen wir uns an, wo ein Anfänger mit dem Testen von TypeScript beginnen sollte. Sie erfahren, wie Sie die Umgebung einrichten, Ihren ersten Unit-Test schreiben und sich nicht in den Typen verlieren. Kein überflüssiges Wissen – nur Praxis und echte Code-Beispiele.
\n\nWarum TypeScript überhaupt testen, wenn es schon sicher ist?
\n\nTypeScript fängt zwar viele Fehler bereits zur Kompilierzeit ab: falsche Typen, fehlende Felder, ungültige Argumente. Aber statische Typisierung schützt nicht vor logischen Fehlern. Ihre Funktion kann perfekt kompilieren, aber ein falsches Ergebnis liefern. Zum Beispiel:
\n\nfunction sum(a: number, b: number): number {\n return a - b; // Fehler! Statt Addition wird subtrahiert\n}\n\nTypeScript wird sich nicht beschweren – die Typen stimmen. Ein Unit-Test zeigt jedoch sofort, dass sum(2, 2) nicht gleich 4 ist. Daher ist TypeScript-Testen keine Laune, sondern eine Notwendigkeit für jedes ernsthafte Projekt.
Schritt 1. Werkzeug auswählen: Warum Jest der beste Freund für Anfänger ist
\n\nEs gibt mehrere beliebte Test-Frameworks auf dem Markt: Mocha, Jasmine, Vitest, Jest. Für Anfänger empfehle ich wärmstens Jest. Warum?
\n\n- \n
- Funktioniert "out of the box" – keine lange Einrichtung nötig. \n
- Integrierter Mock-Mechanismus und Code-Abdeckung. \n
- Hervorragende TypeScript-Unterstützung über
ts-jest. \n - Verständliche Fehlermeldungen. \n
Lassen Sie uns Jest in Ihrem Projekt installieren. Ich gehe davon aus, dass Sie TypeScript bereits haben. Falls nicht, erstellen Sie ein neues Projekt:
\n\nmkdir my-ts-project\ncd my-ts-project\nnpm init -y\nnpm install typescript jest @types/jest ts-jest --save-dev\n\nJetzt erstellen wir eine Datei jest.config.js im Projektstammverzeichnis:
module.exports = {\n preset: 'ts-jest',\n testEnvironment: 'node',\n roots: ['/src'],\n testMatch: ['**/__tests__/**/*.ts', '**/?(*.)+(spec|test).ts'],\n}; \n\nUnd fügen ein Skript in package.json hinzu:
"scripts": {\n "test": "jest",\n "test:watch": "jest --watch"\n}\n\nFertig! Jetzt können Sie Tests schreiben.
\n\nSchritt 2. Den ersten Test in TypeScript schreiben
\n\nErstellen wir eine einfache Funktion in der Datei src/math.ts:
export function add(a: number, b: number): number {\n return a + b;\n}\n\nexport function divide(a: number, b: number): number {\n if (b === 0) {\n throw new Error('Division durch Null ist nicht erlaubt');\n }\n return a / b;\n}\n\nJetzt schreiben wir einen Test dafür. Erstellen Sie den Ordner src/__tests__/ und die Datei math.test.ts:
import { add, divide } from '../math';\n\ndescribe('Math functions', () => {\n test('adds two numbers correctly', () => {\n expect(add(2, 3)).toBe(5);\n expect(add(-1, 1)).toBe(0);\n expect(add(0, 0)).toBe(0);\n });\n\n test('divides two numbers', () => {\n expect(divide(10, 2)).toBe(5);\n expect(divide(9, 3)).toBe(3);\n });\n\n test('throws error when dividing by zero', () => {\n expect(() => divide(5, 0)).toThrow('Division durch Null ist nicht erlaubt');\n });\n});\n\nFühren Sie npm test aus und Sie sehen einen grünen Bericht. Herzlichen Glückwunsch – Sie haben gerade Ihre ersten Unit-Tests in TypeScript geschrieben!
Was ist hier passiert?
\n\n- \n
describe– fasst Tests in einer logischen Gruppe zusammen. \n testoderit– ein einzelner Testfall. \n expect– eine Behauptung, die überprüft