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

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

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

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

TypeScript में परीक्षण: यूनिट से e2e तक — पूर्ण मार्गदर्शिका

\n

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

\n\n

1. यूनिट-परीक्षण: परीक्षण पिरामिड का आधार

\n

यूनिट-टेस्ट बाहरी निर्भरताओं के बिना पृथक मॉड्यूल (फ़ंक्शन, क्लास, मेथड) की जाँच करते हैं। TypeScript के लिए सबसे अच्छा विकल्प Jest है — यह बॉक्स से बाहर TypeScript का समर्थन करता है और मॉक और एसर्ट के लिए समृद्ध API प्रदान करता है।

\n\n

TypeScript के लिए Jest सेटअप

\n
npm install --save-dev jest @types/jest ts-jest\nnpx ts-jest config:init
\n

फ़ाइल jest.config.ts में शामिल होना चाहिए:

\n
export default {\n  preset: 'ts-jest',\n  testEnvironment: 'node',\n  roots: ['<rootDir>/src'],\n  testMatch: ['**/__tests__/**/*.test.ts']\n};
\n\n

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

\n

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

\n
// src/utils/discount.ts\nexport function calculateDiscount(price: number, percent: number): number {\n  if (percent < 0 || percent > 100) throw new Error('Invalid percent');\n  return price - (price * percent) / 100;\n}
\n

इसके लिए परीक्षण:

\n
// src/__tests__/discount.test.ts\nimport { calculateDiscount } from '../utils/discount';\n\ndescribe('calculateDiscount', () => {\n  it('मूल्य 100 और छूट 20% के लिए 80 लौटाना चाहिए', () => {\n    expect(calculateDiscount(100, 20)).toBe(80);\n  });\n\n  it('अमान्य प्रतिशत पर त्रुटि फेंकनी चाहिए', () => {\n    expect(() => calculateDiscount(100, 150)).toThrow('Invalid percent');\n  });\n\n  it('100% छूट पर 0 लौटाना चाहिए', () => {\n    expect(calculateDiscount(50, 100)).toBe(0);\n  });\n});
\n\n

मॉक के साथ कार्य

\n

परीक्षणों को अलग करने के लिए मॉक का उपयोग करें। DB पर निर्भर सेवा का उदाहरण:

\n
// src/services/user.service.ts\nimport { db } from '../database';\n\nexport class UserService {\n  async getUser(id: number) {\n    const user = await db.findUser(id);\n    if (!user) throw new Error('User not found');\n    return user;\n  }\n}
\n
// src/__tests__/user.service.test.ts\nimport { UserService } from '../services/user.service';\nimport { db } from '../database';\n\njest.mock('../database');\n\ndescribe('UserService', () => {\n  it('उपयोगकर्ता लौटाना चाहिए', async () => {\n    const mockUser = { id: 1, name: 'Alice' };\n    (db.findUser as jest.Mock).mockResolvedValue(mockUser);\n\n    const service = new UserService();\n    const result = await service.getUser(1);\n    expect(result).toEqual(mockUser);\n  });\n});
\n\n

2. इंटीग्रेशन परीक्षण: घटकों के बीच परस्पर क्रिया की जाँच

\n

इंटीग्रेशन टेस्ट जाँचते हैं कि मॉड्यूल एक साथ कैसे काम करते हैं: API रूट्स, डेटाबेस, बाहरी सेवाएँ। Node.js पर TypeScript अनुप्रयोगों के लिए अक्सर Jest के साथ Supertest का उपयोग किया जाता है।

\n\n

Express/NestJS के लिए इंटीग्रेशन टेस्ट सेटअप

\n
npm install --save-dev supertest @types/supertest
\n

REST API (NestJS) के लिए परीक्षण का उदाहरण:

\n
// src/__tests__/app.integration.test.ts\nimport { Test, TestingModule } from '@nestjs/testing';\nimport { INestApplication } from '@nestjs/common';\nimport * as request from 'supertest';\nimport { AppModule } from '../app.module';\n\ndescribe('AppController (e2e)', () => {\n  let app: INestApplication;\n\n  beforeAll(async () => {\n    const moduleFixture: TestingModule = await Test.createTestingModule({\n      imports: [AppModule],\n    }).compile();\n\n    a                

ब्लॉग

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