TypeScript में परीक्षण: यूनिट, इंटीग्रेशन और E2E परीक्षण

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

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

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

परिचय: TypeScript कोड का परीक्षण क्यों करें?



TypeScript, JavaScript का एक सुपरसेट है जो स्टैटिक टाइपिंग जोड़ता है। हालांकि, टाइप्स एप्लिकेशन के सही लॉजिक की गारंटी नहीं देते हैं। TypeScript में परीक्षण केवल एक "अच्छा अभ्यास" नहीं है, बल्कि कोड गुणवत्ता बनाए रखने, रिग्रेशन को रोकने और डेवलपमेंट को गति देने के लिए एक आवश्यकता है।



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



1. TypeScript में Unit-परीक्षण



Unit-टेस्ट क्या हैं?

Unit-टेस्ट अलग-थलग मॉड्यूल या फंक्शन की जांच करते हैं। वे तेजी से चलते हैं और उन्हें बाहरी निर्भरताओं (डेटाबेस, नेटवर्क, फ़ाइल सिस्टम) की आवश्यकता नहीं होती है। मुख्य उद्देश्य यह सुनिश्चित करना है कि कोड की प्रत्येक छोटी इकाई सही ढंग से काम करे।



टूल्स: Jest + ts-jest

TypeScript में unit-परीक्षण के लिए सबसे लोकप्रिय फ्रेमवर्क Jest है जिसमें ट्रांसपाइलर ts-jest है। यह मॉक्स, स्पाइज़, कवरेज को सपोर्ट करता है और TypeScript के साथ अच्छी तरह से इंटीग्रेट होता है।



Unit-टेस्ट का उदाहरण

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



// discount.tsexport function calculateDiscount(price: number, discountPercent: number): number {  if (price < 0 || discountPercent < 0 || discountPercent > 100) {    throw new Error('Invalid input');  }  return price * (1 - discountPercent / 100);}


हम टेस्ट लिखते हैं:



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

describe('calculateDiscount', () => { it('should apply 10% discount correctly', () => { expect(calculateDiscount(1000, 10)).toBe(900); });

it('should throw error for negative price', () => { expect(() => calculateDiscount(-100, 10)).toThrow('Invalid input'); });

it('should handle 0% discount', () => { expect(calculateDiscount(500, 0)).toBe(500); });});


चलाएं: npx jest. Jest स्वचालित रूप से सभी *.test.ts फ़ाइलों को ढूंढ लेगा।



Unit-टेस्ट के लिए Best practices

  • निर्भरताओं को अलग करें — DB या API को कॉल करने वाले मॉड्यूल के लिए मॉक्स (jest.mock) का उपयोग करें।
  • बाउंड्री केस का परीक्षण करें — खाली ऐरे, null, नकारात्मक संख्याएं।
  • FIRST सिद्धांत का पालन करें — Fast, Isolated, Repeatable, Self-validating, Timely.
  • describe/it का उपयोग करें — टेस्ट की पठनीय संरचना के लिए।


2. इंटीग्रेशन परीक्षण (Integration Tests)



इंटीग्रेशन टेस्ट क्या जांचते हैं?

इंटीग्रेशन टेस्ट कई मॉड्यूलों के बीच इंटरैक्शन की जांच करते हैं: कंट्रोलर + सर्विस + डेटाबेस, या API एंडपॉइंट + middleware। वे unit-टेस्ट से धीमे होते हैं, लेकिन घटकों के सही एकीकरण में अधिक विश्वास दिलाते हैं।



टूल्स: Supertest + Jest + in-memory DB

Express/Node.js API के परीक्षण के लिए अक्सर Jest के साथ Supertest (HTTP एसर्शन) का उपयोग किया जाता है। डेटाबेस को in-memory (जैसे, mongodb-memory-server या sqlite3) के रूप में चलाया जा सकता है।



Express API के लिए इंटीग्रेशन टेस्ट का उदाहरण

मान लीजिए, हमारे पास उपयोगकर्ताओं के प्रबंधन के लिए एक सरल REST API है:



// app.tsimport express from 'express';import { userRouter } from './routes/userRoutes';

const app = express();app.use(express.json());app.use('/api/users', userRouter);

export { app };


Supertest के साथ टेस्ट:



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

describe('POST /api/users', () => { it('should create a new user and return 201', async () => {```

ब्लॉग

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