जावास्क्रिप्ट (Node.js) में परीक्षण: फ्रेमवर्क और उपकरण

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

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

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

जावास्क्रिप्ट (Node.js) में परीक्षण: फ्रेमवर्क और उपकरण

\n\n

परीक्षण विश्वसनीय सॉफ्टवेयर विकास का एक अनिवार्य हिस्सा है। Node.js इकोसिस्टम में परीक्षण स्वचालन के लिए कई उपकरण मौजूद हैं, सरल assert-लाइब्रेरी से लेकर शक्तिशाली फ्रेमवर्क तक। इस लेख में, हम मुख्य फ्रेमवर्क और उपकरणों पर चर्चा करेंगे जो आपको Node.js अनुप्रयोगों के लिए गुणवत्तापूर्ण परीक्षण लिखने में मदद करेंगे।

\n\n

Node.js अनुप्रयोगों का परीक्षण क्यों महत्वपूर्ण है?

\n

Node.js का उपयोग अक्सर सर्वर-साइड डेवलपमेंट, API और माइक्रोसर्विसेज के लिए किया जाता है। ऐसी प्रणालियों में त्रुटियाँ महंगे डाउनटाइम या डेटा लीक का कारण बन सकती हैं। स्वचालित परीक्षण आपको यह करने में सक्षम बनाते हैं:

\n
    \n
  • रीफैक्टरिंग के दौरान तेजी से रिग्रेशन ढूँढना
  • \n
  • कोड के व्यवहार का दस्तावेजीकरण करना
  • \n
  • डेटाबेस और बाहरी सेवाओं के साथ एकीकरण में स्थिरता सुनिश्चित करना
  • \n
  • सत्यापन योग्य परिदृश्यों के कारण कोड-रिव्यू को गति देना
  • \n
\n\n

Node.js में परीक्षणों के मुख्य प्रकार

\n
    \n
  • यूनिट-टेस्ट — अलग-अलग फंक्शन या मॉड्यूल को अलग-थलग करके जाँचते हैं।
  • \n
  • इंटीग्रेशन टेस्ट — कई मॉड्यूलों (जैसे, DB या API के साथ) के बीच परस्पर क्रिया का परीक्षण करते हैं।
  • \n
  • E2E-टेस्ट — ब्राउज़र या HTTP अनुरोधों के माध्यम से उपयोगकर्ता क्रियाओं का अनुकरण करते हैं।
  • \n
\n\n

Jest — Facebook का सार्वभौमिक फ्रेमवर्क

\n

Jest जावास्क्रिप्ट परीक्षण के लिए सबसे लोकप्रिय फ्रेमवर्क है। इसमें सब कुछ शामिल है: टेस्ट-रनर, एसर्शन लाइब्रेरी, मॉक और अंतर्निहित एसिंक्रोनस सपोर्ट।

\n
// math.js\nfunction add(a, b) {\n  return a + b;\n}\nmodule.exports = { add };\n\n// math.test.js\nconst { add } = require('./math');\n\ntest('adds 1 + 2 to equal 3', () => {\n  expect(add(1, 2)).toBe(3);\n});\n
\n

Jest समर्थन करता है:

\n
    \n
  • टेस्ट फ़ाइलों का स्वचालित पता लगाना (*.test.js)
  • \n
  • अंतर्निहित मॉक और स्पाई
  • \n
  • --coverage फ्लैग के माध्यम से कोड कवरेज
  • \n
  • async/await के माध्यम से एसिंक्रोनस कोड के साथ काम करना
  • \n
\n\n

Mocha + Chai — लचीला क्लासिक

\n

Mocha एक टेस्ट-रनर है जो परीक्षणों के लिए संरचना प्रदान करता है (describe, it)। एसर्शन के लिए आमतौर पर Chai लाइब्रेरी का उपयोग किया जाता है, जो कई शैलियाँ प्रदान करती है (assert, expect, should)।

\n
const chai = require('chai');\nconst expect = chai.expect;\nconst { add } = require('./math');\n\ndescribe('Math operations', () => {\n  it('should add two numbers', () => {\n    expect(add(2, 3)).to.equal(5);\n  });\n});\n
\n

Mocha को अक्सर इसके साथ जोड़ा जाता है:

\n
    \n
  • Chai — पढ़ने योग्य एसर्शन के लिए
  • \n
  • Sinon — मॉक, स्टब और स्पाई के लिए
  • \n
  • Supertest — HTTP सर्वर के परीक्षण के लिए
  • \n
\n\n

Sinon — शक्तिशाली मॉक और स्पाई

\n

Sinon.JS टेस्ट डबल बनाने के लिए एक लाइब्रेरी है। यह आपको बाहरी निर्भरताओं से परीक्षण किए जा रहे कोड को अलग करने की अनुमति देता है।

\n
const sinon = require('sinon');\nconst { expect } = require('chai');\n\nconst userService = {\n  getUser: (id) => { /* बाहरी कॉल */ }\n};\n\ndescribe('User controller', () => {\n  it('should call getUser with correct id', () => {\n    const spy = sinon.spy(userService, 'getUser');\n    userService.getUser(123);\n    expect(spy.calledWith(123)).to.be.true;\n    spy.restore();\n  });\n});\n
\n\n

Supertest — HTTP सर्वर का परीक्षण

\n

Supertest आपको वास्तविक पोर्ट पर चलाए बिना Express/Koa सर्वर का परीक्षण करने की अनुमति देता है। यह HTTP अनुरोधों का अनुकरण करता है और प्रतिक्रियाओं की जाँच करता है।

\n
const request = require('supertest');\nconst express = require('express');\n\nconst app = express();\napp.get('/hello', (req, res) => {\n  res.status(200).json({ message: 'Hello World' });\n});\n\ndescribe('GET /hello', () => {\n  it('responds with json', (done) => {\n    request(app)\n      .get('/hello')\n      .expect('Content-Type', /j                    

अनुशंसाएँ