Was ist ts-jest und wozu wird es benötigt?
\n\nts-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\nDas 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.
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
Installation von ts-jest
\n\nFü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\nnpm install --save-dev jest typescript ts-jest @types/jest\n\nOder über yarn:
\n\nyarn add --dev jest typescript ts-jest @types/jest\n\nErklä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
Nach der Installation muss die Datei jest.config.js (oder jest.config.ts) erstellt oder aktualisiert werden:
// 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\nStellen Sie außerdem sicher, dass in der tsconfig.json die richtigen Parameter eingestellt sind:
{\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\nSchnellstart mit einem Codebeispiel
\n\nErstellen wir eine einfache Funktion und einen Test dafür. Die Projektstruktur:
\n\nmy-project/\n├── src/\n│ ├── math.ts\n│ └── __tests__/\n│ └── math.test.ts\n├── jest.config.js\n├── tsconfig.json\n└── package.json\n\nDatei: src/math.ts
\n\nexport 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\nDatei: src/__tests__/math.test.ts
\n\nimport { add, subtract, multiply, divide } from '../math';\n\ndescribe('Mathematische Funktionen', () => {\n test('addiert 1 + 2 zu 3', () => {\n expect(add(1, 2)).toBe(3) Auch in der Bibliothek
Supertest für JavaScript (Node.js): Komplettguide mit Beispielen
PDF-Berichterstellung mit JavaScript (Node.js): Bibliotheksübersicht und Codebeispiele
Arbeiten mit Bildern in Swift: Vollständiger Leitfaden für iOS und macOS
Internationalisierung (i18n) in Rust: Die Bibliotheken gettext-rs und fluent-rs
AVFoundation für Swift: Das komplette Tutorial mit Beispielen