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

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

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

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

जावास्क्रिप्ट में परीक्षण: यूनिट, इंटीग्रेशन, ई2ई — शुरू से अंत तक



जावास्क्रिप्ट (विशेषकर Node.js) पर आधुनिक वेब एप्लिकेशन का विकास गुणवत्तापूर्ण परीक्षण के बिना संभव नहीं है। परीक्षण न केवल प्रोडक्शन में जाने से पहले बग पकड़ते हैं, बल्कि जीवंत दस्तावेज़ीकरण के रूप में भी काम करते हैं, और बिना कुछ तोड़ने के डर के कोड को रिफैक्टर करने की अनुमति देते हैं। इस लेख में, हम परीक्षण पिरामिड के तीन मुख्य स्तरों को समझेंगे: यूनिट (मॉड्यूलर), इंटीग्रेशन (एकीकरण) और ई2ई (एंड-टू-एंड)। आप जानेंगे कि वे कैसे भिन्न हैं, किन उपकरणों का उपयोग करना है, और Node.js पर तैयार उदाहरण देखेंगे।



1. यूनिट-टेस्ट: पृथक मॉड्यूल का परीक्षण



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



Node.js के लिए सबसे लोकप्रिय फ्रेमवर्क Jest (Facebook द्वारा) है। इसे जटिल कॉन्फ़िगरेशन की आवश्यकता नहीं है, इसमें बिल्ट-इन एसर्शन, मॉक और कोड कवरेज है।



उदाहरण: ऐरे सॉर्टिंग फ़ंक्शन का परीक्षण



// utils.jsfunction sortNumbers(arr) {  if (!Array.isArray(arr)) {    throw new Error('Input must be an array');  }  return [...arr].sort((a, b) => a - b);}

module.exports = { sortNumbers };


// utils.test.jsconst { sortNumbers } = require('./utils');

describe('sortNumbers', () => { test('should sort an array of numbers in ascending order', () => { expect(sortNumbers([3, 1, 2])).toEqual([1, 2, 3]); });

test('should handle an empty array', () => { expect(sortNumbers([])).toEqual([]); });

test('should throw error for non-array input', () => { expect(() => sortNumbers('string')).toThrow('Input must be an array'); });});


यूनिट-टेस्ट के लिए Best practices:

  • एक परीक्षण — एक जाँच (एक assert)।
  • फ़ंक्शन के अनुसार परीक्षणों को समूहित करने के लिए describe का उपयोग करें।
  • बाहरी निर्भरताओं को मॉक करें (jest.mock() के साथ)।
  • कोड लिखने से पहले परीक्षण लिखें (TDD — Test-Driven Development)।


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



इंटीग्रेशन टेस्ट जाँचते हैं कि सिस्टम के विभिन्न मॉड्यूल एक साथ कैसे काम करते हैं। उदाहरण के लिए, आपका कंट्रोलर डेटाबेस या बाहरी API के साथ कैसे इंटरैक्ट करता है। यूनिट-टेस्ट के विपरीत, यहाँ हम सब कुछ मॉक नहीं करते, बल्कि वास्तविक (या परीक्षण) वातावरण का उपयोग करते हैं।



Express पर HTTP सर्वर के परीक्षण के लिए, Supertest लाइब्रेरी Jest के साथ बहुत उपयुक्त है।



उदाहरण: REST एंडपॉइंट का परीक्षण



// app.jsconst express = require('express');const app = express();

app.get('/api/hello', (req, res) => { res.json({ message: 'Hello, World!' });});

app.post('/api/data', (req, res) => { const { name } = req.body; if (!name) { return res.status(400).json({ error: 'Name is required' }); } res.status(201).json({ received: name });});

module.exports = app;


// app.test.jsconst request = require('supertest');const app = require('./app');

describe('Integration tests for API', () => { test('GET /api/hello should return a greeting', async () => { const response = await request(app) .get('/api/hello') .expect(200);

expect(response.body).toEqual({ message: 'Hello, World!' }); });

test('POST /api/data with valid body should return 201', async () => { const response = await request(app) .post('/api/data') .send({ name: 'Alice' }) .expect(201);

expect(response.body).toEqual({ received: 'Alice' }); });

test('POST /api/data without name should return 400', async () =>

ब्लॉग

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