जावास्क्रिप्ट (Node.js) में परीक्षण: फ्रेमवर्क और उपकरण
\n\nपरीक्षण विश्वसनीय सॉफ्टवेयर विकास का एक अनिवार्य हिस्सा है। Node.js इकोसिस्टम में परीक्षण स्वचालन के लिए कई उपकरण मौजूद हैं, सरल assert-लाइब्रेरी से लेकर शक्तिशाली फ्रेमवर्क तक। इस लेख में, हम मुख्य फ्रेमवर्क और उपकरणों पर चर्चा करेंगे जो आपको Node.js अनुप्रयोगों के लिए गुणवत्तापूर्ण परीक्षण लिखने में मदद करेंगे।
\n\nNode.js अनुप्रयोगों का परीक्षण क्यों महत्वपूर्ण है?
\nNode.js का उपयोग अक्सर सर्वर-साइड डेवलपमेंट, API और माइक्रोसर्विसेज के लिए किया जाता है। ऐसी प्रणालियों में त्रुटियाँ महंगे डाउनटाइम या डेटा लीक का कारण बन सकती हैं। स्वचालित परीक्षण आपको यह करने में सक्षम बनाते हैं:
\n- \n
- रीफैक्टरिंग के दौरान तेजी से रिग्रेशन ढूँढना \n
- कोड के व्यवहार का दस्तावेजीकरण करना \n
- डेटाबेस और बाहरी सेवाओं के साथ एकीकरण में स्थिरता सुनिश्चित करना \n
- सत्यापन योग्य परिदृश्यों के कारण कोड-रिव्यू को गति देना \n
Node.js में परीक्षणों के मुख्य प्रकार
\n- \n
- यूनिट-टेस्ट — अलग-अलग फंक्शन या मॉड्यूल को अलग-थलग करके जाँचते हैं। \n
- इंटीग्रेशन टेस्ट — कई मॉड्यूलों (जैसे, DB या API के साथ) के बीच परस्पर क्रिया का परीक्षण करते हैं। \n
- E2E-टेस्ट — ब्राउज़र या HTTP अनुरोधों के माध्यम से उपयोगकर्ता क्रियाओं का अनुकरण करते हैं। \n
Jest — Facebook का सार्वभौमिक फ्रेमवर्क
\nJest जावास्क्रिप्ट परीक्षण के लिए सबसे लोकप्रिय फ्रेमवर्क है। इसमें सब कुछ शामिल है: टेस्ट-रनर, एसर्शन लाइब्रेरी, मॉक और अंतर्निहित एसिंक्रोनस सपोर्ट।
\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\nJest समर्थन करता है:
\n- \n
- टेस्ट फ़ाइलों का स्वचालित पता लगाना (
*.test.js) \n - अंतर्निहित मॉक और स्पाई \n
--coverageफ्लैग के माध्यम से कोड कवरेज \n async/awaitके माध्यम से एसिंक्रोनस कोड के साथ काम करना \n
Mocha + Chai — लचीला क्लासिक
\nMocha एक टेस्ट-रनर है जो परीक्षणों के लिए संरचना प्रदान करता है (describe, it)। एसर्शन के लिए आमतौर पर Chai लाइब्रेरी का उपयोग किया जाता है, जो कई शैलियाँ प्रदान करती है (assert, expect, should)।
\nconst 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\nMocha को अक्सर इसके साथ जोड़ा जाता है:
\n- \n
- Chai — पढ़ने योग्य एसर्शन के लिए \n
- Sinon — मॉक, स्टब और स्पाई के लिए \n
- Supertest — HTTP सर्वर के परीक्षण के लिए \n
Sinon — शक्तिशाली मॉक और स्पाई
\nSinon.JS टेस्ट डबल बनाने के लिए एक लाइब्रेरी है। यह आपको बाहरी निर्भरताओं से परीक्षण किए जा रहे कोड को अलग करने की अनुमति देता है।
\nconst 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\nSupertest — HTTP सर्वर का परीक्षण
\nSupertest आपको वास्तविक पोर्ट पर चलाए बिना Express/Koa सर्वर का परीक्षण करने की अनुमति देता है। यह HTTP अनुरोधों का अनुकरण करता है और प्रतिक्रियाओं की जाँच करता है।
\nconst 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 पुस्तकालय में भी
Elasticsearch Java Client: पूर्ण गाइड और Java API ट्यूटोरियल
Swagger/OpenAPI जनरेशन Java के लिए: लाइब्रेरी और टूल्स
Superstruct TypeScript: पूर्ण गाइड उदाहरणों के साथ
Go (Golang) में CSV के साथ कार्य: encoding/csv पैकेज के लिए पूर्ण गाइड
Rust में डेटाबेस माइग्रेशन: Diesel, SeaORM और sqlx टूल का अवलोकन