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

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

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

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

जावास्क्रिप्ट में परीक्षण: मॉड्यूलर से एंड-टू-एंड परीक्षण तक

\n\n

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

\n\n

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

\n\n

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

\n\n

यूनिट-परीक्षण के लिए उपकरण

\n
    \n
  • Jest - Facebook का सबसे लोकप्रिय फ्रेमवर्क। इसमें बिल्ट-इन मॉक, स्नैपशॉट और कोड कवरेज शामिल हैं।
  • \n
  • Mocha + Chai - उन लोगों के लिए लचीला संयोजन जो सब कुछ मैन्युअल रूप से कॉन्फ़िगर करना पसंद करते हैं।
  • \n
  • Vitest - Jest का आधुनिक विकल्प, Vite प्रोजेक्ट्स के लिए अनुकूलित।
  • \n
\n\n
// Jest पर यूनिट-टेस्ट का उदाहरण\nconst { calculateDiscount } = require('./pricing');\n\ndescribe('calculateDiscount', () => {\n  test('1000 से अधिक राशि पर 10% छूट लौटाता है', () => {\n    const result = calculateDiscount(1500);\n    expect(result).toBe(1350);\n  });\n\n  test('1000 या उससे कम राशि पर छूट लागू नहीं करता', () => {\n    const result = calculateDiscount(500);\n    expect(result).toBe(500);\n  });\n\n  test('सीमा मान 1000 को संभालता है', () => {\n    const result = calculateDiscount(1000);\n    expect(result).toBe(1000);\n  });\n});
\n\n

यूनिट-परीक्षण की सर्वोत्तम प्रथाएँ

\n
    \n
  • एक बार में एक ही व्यवहार का परीक्षण करें (प्रति परीक्षण एक assert)।
  • \n
  • वर्णनात्मक परीक्षण नामों का उपयोग करें (given/when/then)।
  • \n
  • प्राइवेट मेथड का परीक्षण करने से बचें - पब्लिक इंटरफ़ेस का परीक्षण करें।
  • \n
  • कोड कवरेज को 70-80% के स्तर पर बनाए रखें।
  • \n
\n\n

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

\n\n

इंटीग्रेशन परीक्षण जाँच करते हैं कि विभिन्न मॉड्यूल एक साथ कैसे काम करते हैं। Node.js के संदर्भ में, इसका आमतौर पर अर्थ वास्तविक डेटाबेस, फ़ाइल सिस्टम या बाहरी API के साथ परीक्षण करना है।

\n\n

इंटीग्रेशन परीक्षण के विशिष्ट परिदृश्य

\n
    \n
  • कंट्रोलर का सर्विस लेयर और डेटाबेस के साथ अंतःक्रिया।
  • \n
  • Express/Koa के मिडलवेयर और रूट्स की जाँच।
  • \n
  • टेस्ट डेटाबेस (मेमोरी में SQLite या Docker में PostgreSQL) के साथ रिपॉजिटरी का परीक्षण।
  • \n
\n\n
// Supertest और Jest के साथ इंटीग्रेशन टेस्ट का उदाहरण\nconst request = require('supertest');\nconst app = require('../app');\nconst { createTestUser, cleanDatabase } = require('./helpers');\n\nbeforeEach(async () => {\n  await cleanDatabase();\n});\n\ndescribe('POST /api/users', () => {\n  test('उपयोगकर्ता बनाता है और 201 लौटाता है', async () => {\n    const response = await request(app)\n      .post('/api/users')\n      .send({ name: 'इवान', email: 'ivan@test.com' });\n\n    expect(response.status).toBe(201);\n    expect(response.body).toHaveProperty('id');\n    expect(response.body.name).toBe('इवान');\n  });\n\n  test('डुप्लिकेट ईमेल पर 400 लौटाता है', async () => {\n    await createTestUser({ email: 'ivan@test.com' });\n\n    const response = await request(app)\n      .post('/api/users')\n      .send({ name: 'पीटर', email: 'ivan@test.com' });\n\n    expect(response.status).toBe(400);\n    expect(response.body.error).toBe('ईमेल पहले से उपयोग में है');\n  });\n});
\n\n

परीक्षण बुनियादी ढाँचे की स्थापना

\n
    \n
  • Docker Compose - परीक्षण सेवाओं (DB, Redis) को चालू करने के लिए।
  • \n
  • Testcontainers - परीक्षणों से कंटेनरों का प्रोग्रामेटिक प्रबंधन।
  • \n
  • इन-मेमोरी डेटाबेस (जैसे, mongodb-memory-server) - बाहरी निर्भरताओं के बिना तेज़ परीक्षणों के लिए।
  • \n
\n\n

3. E2E-परीक्षण: संपूर्ण सिस्टम की जाँच

ब्लॉग

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