TypeScript में परीक्षण: यूनिट, इंटीग्रेशन, e2e शुरू से अंत तक

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

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

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

परिचय: TypeScript में परीक्षण क्यों ज़रूरी है

TypeScript एक शक्तिशाली उपकरण है जो JavaScript में स्थैतिक टाइपिंग जोड़ता है। हालाँकि, सबसे सख्त टाइप सिस्टम भी यह गारंटी नहीं देता कि आपका कोड रनटाइम में सही ढंग से काम करेगा। बग, तार्किक त्रुटियाँ, किनारे के मामलों की गलत हैंडलिंग - ये सब कंपाइलेशन के दायरे से बाहर रहते हैं। यहीं पर परीक्षण काम आता है।

इस लेख में, हम TypeScript में परीक्षण के तीन मुख्य स्तरों पर चर्चा करेंगे: यूनिट (मॉड्यूलर), इंटीग्रेशन (एकीकरण) और e2e (एंड-टू-एंड)। आप जानेंगे कि ये कैसे भिन्न हैं, कब किसका उपयोग करना है, और वास्तविक कोड उदाहरण देखेंगे। पढ़ने के बाद, आप अपने TypeScript प्रोजेक्ट के लिए एक पूर्ण परीक्षण पाइपलाइन सेट कर सकेंगे।



1. यूनिट-परीक्षण: कोड की परमाणु इकाइयों की जाँच

यूनिट-टेस्ट जाँच का सबसे तेज़ और सस्ता स्तर है। ये एक फ़ंक्शन, विधि या क्लास को अलग करते हैं और इसे बाहरी निर्भरताओं (डेटाबेस, API, फ़ाइल सिस्टम) से अलग करके परीक्षण करते हैं।



1.1 उपकरण चयन और सेटअप

TypeScript के लिए सबसे लोकप्रिय फ्रेमवर्क Jest है। इसमें ts-jest या @swc/jest के माध्यम से TypeScript के लिए अंतर्निहित समर्थन है।

// इंस्टॉलेशनnpm install --save-dev jest @types/jest ts-jest

// कॉन्फ़िगरेशन इनिशियलाइज़ेशनnpx ts-jest config:init

इसके बाद रूट में सेटिंग्स के साथ jest.config.js फ़ाइल दिखाई देगी।



1.2 फ़ंक्शन के लिए यूनिट-टेस्ट का उदाहरण

मान लीजिए, हमारे पास छूट की गणना के लिए एक सरल फ़ंक्शन है:

// discount.tsexport function applyDiscount(price: number, discountPercent: number): number {  if (discountPercent < 0 || discountPercent > 100) {    throw new Error('अमान्य छूट प्रतिशत');  }  return price - (price * discountPercent) / 100;}

इसके लिए यूनिट-टेस्ट लिखते हैं:

// discount.test.tsimport { applyDiscount } from './discount';

describe('applyDiscount', () => { it('10% छूट की सही गणना करनी चाहिए', () => { expect(applyDiscount(1000, 10)).toBe(900); });

it('0% छूट पर मूल मूल्य लौटाना चाहिए', () => { expect(applyDiscount(500, 0)).toBe(500); });

it('100% से अधिक छूट पर त्रुटि फेंकनी चाहिए', () => { expect(() => applyDiscount(100, 150)).toThrow('अमान्य छूट प्रतिशत'); });});

चलाएँ: npx jest। तीनों टेस्ट हरे रंग में पास होने चाहिए।



1.3 मॉक और स्टब

यदि फ़ंक्शन किसी बाहरी सेवा (जैसे डेटाबेस) तक पहुँचता है, तो हम इसे मॉक से बदल देते हैं:

// userService.test.tsimport { getUser } from './userService';import { db } from './database';

jest.mock('./database'); // स्वचालित मॉक

test('getUser ID द्वारा उपयोगकर्ता लौटाता है', async () => { (db.findUser as jest.Mock).mockResolvedValue({ id: 1, name: 'इवान' }); const user = await getUser(1); expect(user.name).toBe('इवान');});


2. इंटीग्रेशन-परीक्षण: मॉड्यूल के बीच बातचीत की जाँच

इंटीग्रेशन-टेस्ट जाँचते हैं कि सिस्टम के विभिन्न भाग एक साथ कैसे काम करते हैं: कंट्रोलर, सर्विसेज, रिपॉजिटरी, डेटाबेस। ये यूनिट-टेस्ट से धीमे होते हैं, लेकिन कनेक्शन की सटीकता में अधिक विश्वास देते हैं।



2.1 Express के साथ API-एंडपॉइंट का परीक्षण

HTTP अनुरोधों के परीक्षण के लिए हम Supertest लाइब्रेरी का उपयोग Jest के साथ करते हैं।

// इंस्टॉलेशनnpm install --save-dev supertest @types/supertest

मान लीजिए, हमारे पास Express एप्लिकेशन है:

// app.tsimport express from 'express';import { createUser } from './controllers/userController';

export const app = express();app.use(express.json());app.post('/api/users', createUser);

इंटीग्रेशन टेस्ट:

// app.test.tsimport request from 'supertest';import { app } from './                

ब्लॉग

पुस्तक अनुशंसाएँ