ts-jest für TypeScript: Vollständige Anleitung mit Beispielen

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 ts-jest und wozu wird es benötigt?

\n\n

ts-jest ist ein TypeScript-Präprozessor für das beliebte Test-Framework Jest. Es ermöglicht das Ausführen von Tests, die in TypeScript geschrieben sind, ohne vorherige Kompilierung in JavaScript. Die Bibliothek wandelt TypeScript-Code während der Testausführung automatisch in JavaScript um, unter Verwendung des integrierten TypeScript-Compilers.

\n\n

Das Hauptziel von ts-jest ist die nahtlose Integration von TypeScript mit Jest. Ohne sie müsste man die TypeScript-Kompilierung vor jedem Testlauf manuell konfigurieren oder zusätzliche Tools wie ts-node verwenden. ts-jest macht diesen Prozess transparent und automatisch.

\n\n

Die wichtigsten Vorteile der Verwendung von ts-jest:

\n
    \n
  • Automatische Kompilierung — TypeScript-Dateien werden während des Testens "on the fly" kompiliert
  • \n
  • Vollständige TypeScript-Unterstützung — alle Sprachfunktionen (Dekorateure, Generics, Typen) funktionieren korrekt
  • \n
  • Source Maps — bei Fehlern sehen Sie den ursprünglichen TypeScript-Code, nicht den kompilierten JavaScript-Code
  • \n
  • Leistung — ts-jest speichert die Kompilierungsergebnisse zwischen, was wiederholte Ausführungen beschleunigt
  • \n
  • Flexibilität — Compiler-Optionen von TypeScript können über die Jest-Konfiguration angepasst werden
  • \n
\n\n

Installation von ts-jest

\n\n

Für die Arbeit mit ts-jest benötigen Sie Node.js (Version 14 oder höher) und einen Paketmanager wie npm oder yarn. Die Installation erfolgt mit einem Befehl:

\n\n
npm install --save-dev jest typescript ts-jest @types/jest
\n\n

Oder über yarn:

\n\n
yarn add --dev jest typescript ts-jest @types/jest
\n\n

Erklärung der Pakete:

\n
    \n
  • jest — das Test-Framework selbst
  • \n
  • typescript — der TypeScript-Compiler
  • \n
  • ts-jest — der Präprozessor für die Integration
  • \n
  • @types/jest — TypeScript-Typen für Jest (für Autovervollständigung und Typprüfung)
  • \n
\n\n

Nach der Installation muss die Datei jest.config.js (oder jest.config.ts) erstellt oder aktualisiert werden:

\n\n
// jest.config.js\nmodule.exports = {\n  preset: 'ts-jest',\n  testEnvironment: 'node',\n  roots: ['<rootDir>/src'],\n  testMatch: ['**/__tests__/**/*.ts?(x)', '**/?(*.)+(spec|test).ts?(x)'],\n  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node']\n};
\n\n

Stellen Sie außerdem sicher, dass in der tsconfig.json die richtigen Parameter eingestellt sind:

\n\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "strict": true,\n    "esModuleInterop": true,\n    "skipLibCheck": true,\n    "forceConsistentCasingInFileNames": true,\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "declaration": true,\n    "sourceMap": true\n  },\n  "include": ["src/**/*"],\n  "exclude": ["node_modules", "dist", "**/*.test.ts"]\n}
\n\n

Schnellstart mit einem Codebeispiel

\n\n

Erstellen wir eine einfache Funktion und einen Test dafür. Die Projektstruktur:

\n\n
my-project/\n├── src/\n│   ├── math.ts\n│   └── __tests__/\n│       └── math.test.ts\n├── jest.config.js\n├── tsconfig.json\n└── package.json
\n\n

Datei: src/math.ts

\n\n
export function add(a: number, b: number): number {\n  return a + b;\n}\n\nexport function subtract(a: number, b: number): number {\n  return a - b;\n}\n\nexport function multiply(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');\n  }\n  return a / b;\n}
\n\n

Datei: src/__tests__/math.test.ts

\n\n
import { add, subtract, multiply, divide } from '../math';\n\ndescribe('Mathematische Funktionen', () => {\n  test('addiert 1 + 2 zu 3', () => {\n    expect(add(1, 2)).toBe(3)                    

Empfehlungen