ts-jest TypeScript: पूरी गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

ts-jest क्या है और इसकी ज़रूरत क्यों है?

ts-jest एक TypeScript प्रीप्रोसेसर है जो लोकप्रिय टेस्टिंग फ्रेमवर्क Jest के लिए बनाया गया है। यह आपको TypeScript में लिखे टेस्ट को बिना पहले JavaScript में कंपाइल किए चलाने की सुविधा देता है। यह लाइब्रेरी टेस्ट चलाने के दौरान TypeScript कोड को अपने आप JavaScript में बदल देती है, जिसमें TypeScript का बिल्ट-इन कंपाइलर इस्तेमाल होता है।

ts-jest का मुख्य उद्देश्य TypeScript और Jest के बीच एक सहज इंटीग्रेशन प्रदान करना है। इसके बिना, आपको हर टेस्ट रन से पहले TypeScript को मैन्युअली कंपाइल करना पड़ता या ts-node जैसे अतिरिक्त टूल्स का उपयोग करना पड़ता। ts-jest इस प्रक्रिया को पूरी तरह से ऑटोमैटिक और पारदर्शी बना देता है।

ts-jest के मुख्य फायदे:

  • ऑटोमैटिक कंपाइलेशन — TypeScript फ़ाइलें टेस्टिंग के दौरान "ऑन द फ्लाई" कंपाइल हो जाती हैं
  • TypeScript की पूरी सपोर्ट — भाषा की सभी सुविधाएँ (डेकोरेटर, जेनेरिक्स, टाइप्स) सही तरीके से काम करती हैं
  • Source maps — गलतियाँ होने पर आपको कंपाइल किया हुआ JavaScript नहीं, बल्कि असली TypeScript कोड दिखता है
  • परफॉरमेंस — ts-jest कंपाइलेशन के परिणामों को कैश करता है, जिससे बार-बार टेस्ट चलाना तेज़ हो जाता है
  • लचीलापन — Jest कॉन्फ़िगरेशन के ज़रिए TypeScript कंपाइलर के पैरामीटर सेट कर सकते हैं

ts-jest इंस्टॉलेशन

ts-jest के साथ काम करने के लिए आपको Node.js (वर्जन 14 या उससे ऊपर) और npm या yarn पैकेज मैनेजर की ज़रूरत होगी। इंस्टॉलेशन एक ही कमांड से हो जाता है:

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

या yarn के ज़रिए:

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

पैकेजों की व्याख्या:

  • jest — टेस्टिंग फ्रेमवर्क
  • typescript — TypeScript कंपाइलर
  • ts-jest — इंटीग्रेशन के लिए प्रीप्रोसेसर
  • @types/jest — Jest के लिए TypeScript टाइप्स (ऑटोकम्प्लीशन और टाइप चेकिंग के लिए)

इंस्टॉलेशन के बाद jest.config.js (या jest.config.ts) फ़ाइल बनाएँ या अपडेट करें:

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

साथ ही, सुनिश्चित करें कि tsconfig.json में सही पैरामीटर सेट हों:

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

कोड उदाहरण के साथ त्वरित शुरुआत

एक सरल फंक्शन और उसका टेस्ट बनाते हैं। प्रोजेक्ट की संरचना:

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

फ़ाइल: src/math.ts

export function add(a: number, b: number): number {
  return a + b;
}

export function subtract(a: number, b: number): number {
  return a - b;
}

export function multiply(a: number, b: number): number {
  return a * b;
}

export function divide(a: number, b: number): number {
  if (b === 0) {
    throw new Error('Division by zero');
  }
  return a / b;
}

फ़ाइल: src/__tests__/math.test.ts

import { add, subtract, multiply, divide } from '../math';

describe('Math functions', () => {
  test('adds 1 + 2 to equal 3', () => {
    expect(add(1, 2)).toBe(3);
  });

  test('subtracts 5 - 3 to equal 2', () => {
    expect(subtract(5, 3)).toBe(2);
  });

  test                    

अनुशंसाएँ