जावास्क्रिप्ट (Node.js) में परीक्षण: फ्रेमवर्क और उपकरण
गुणवत्तापूर्ण परीक्षण Node.js पर किसी भी गंभीर प्रोजेक्ट के विकास का एक अनिवार्य हिस्सा है। यह प्रारंभिक चरणों में त्रुटियों का पता लगाने, रीफैक्टरिंग को सरल बनाने और एप्लिकेशन के संचालन की स्थिरता सुनिश्चित करने में सक्षम बनाता है। जावास्क्रिप्ट इकोसिस्टम में परीक्षण के विभिन्न स्तरों के लिए कई उपकरण मौजूद हैं: यूनिट-टेस्ट से लेकर एंड-टू-एंड (e2e) परीक्षण तक। इस लेख में, हम प्रमुख फ्रेमवर्क और उपकरणों पर विचार करेंगे जो आपको Node.js वातावरण में विश्वसनीय परीक्षण आयोजित करने में मदद करेंगे।
1. Jest — Facebook का सार्वभौमिक फ्रेमवर्क
Jest जावास्क्रिप्ट परीक्षण के लिए सबसे लोकप्रिय फ्रेमवर्क में से एक है। यह आवश्यक सब कुछ 'बॉक्स से बाहर' प्रदान करता है: टेस्ट-रनर, एसर्शन (assertions) के लिए लाइब्रेरी, मॉक, स्पाई और बिल्ट-इन कोड कवरेज। Jest Node.js पर सर्वर एप्लिकेशन और फ्रंटएंड दोनों के लिए समान रूप से उपयुक्त है।
प्रमुख क्षमताएँ:
- टेस्ट फ़ाइलों का स्वचालित पता लगाना (डिफ़ॉल्ट रूप से
*.test.jsया*.spec.js)। - मॉड्यूल और फ़ंक्शन के लिए मॉक का बिल्ट-इन समर्थन।
- साइड इफेक्ट को रोकने के लिए टेस्ट आइसोलेशन (सैंडबॉक्सिंग)।
- शक्तिशाली स्नैपशॉट परीक्षण प्रणाली।
- वॉच मोड में तेज़ कार्य।
Jest के साथ एक सरल परीक्षण का उदाहरण:
// math.jsfunction add(a, b) { return a + b;}module.exports = { add };
// math.test.jsconst { add } = require('./math');
test('2 + 3 का जोड़ 5 के बराबर है', () => { expect(add(2, 3)).toBe(5);});
test('ऋणात्मक संख्याओं का जोड़', () => { expect(add(-1, -1)).toBe(-2);});चलाने के लिए, टर्मिनल में कमांड npx jest निष्पादित करना पर्याप्त है। Jest स्वचालित रूप से सभी टेस्ट फ़ाइलों को ढूंढ लेगा और एक रिपोर्ट तैयार करेगा।
2. Mocha — लचीला और मॉड्यूलर फ्रेमवर्क
Mocha Node.js के लिए सबसे पुराने और सबसे लचीले फ्रेमवर्क में से एक है। Jest के विपरीत, इसमें एसर्शन या मॉक के लिए लाइब्रेरी शामिल नहीं है — आप स्वयं आवश्यक उपकरण चुनते हैं (उदाहरण के लिए, एसर्शन के लिए Chai और मॉक के लिए Sinon.js)। यह कॉन्फ़िगरेशन की अधिकतम स्वतंत्रता देता है।
मुख्य विशेषताएँ:
- सरल और स्पष्ट सिंटैक्स (
describe,it)। - एसिंक्रोनस परीक्षण के लिए समर्थन (promises, async/await, callbacks)।
- रिपोर्टर (HTML, JSON, Spec, Dot और अन्य) को कस्टमाइज़ करने की समृद्ध संभावनाएँ।
- किसी भी एसर्शन लाइब्रेरी के साथ एकीकरण।
Mocha + Chai के साथ परीक्षण का उदाहरण:
// math.js (वही जो ऊपर है)// math.test.jsconst { expect } = require('chai');const { add } = require('./math');
describe('add फ़ंक्शन', function() { it('2 और 3 जोड़ने पर 5 लौटाना चाहिए', function() { expect(add(2, 3)).to.equal(5); });
it('ऋणात्मक संख्याओं के साथ सही ढंग से काम करना चाहिए', function() { expect(add(-1, -1)).to.equal(-2); });});स्थापना: npm install mocha chai --save-dev। चलाना: npx mocha।
3. Vitest — Vite प्रोजेक्ट्स के लिए आधुनिक विकल्प
Vitest एक अपेक्षाकृत नया फ्रेमवर्क है, जिसे Vite टीम द्वारा बनाया गया है। यह Vite इकोसिस्टम के साथ पूरी तरह से संगत है और एक API प्रदान करता है जो Jest के समान है। Vitest ESM मॉड्यूलर सिस्टम और हॉट रीलोड के उपयोग के कारण काफी तेज़ी से काम करता है।
Vitest के लाभ:
- Vite के कारण बिजली की गति।
- अधिकांश Jest प्लगइन और कॉन्फ़िगरेशन के साथ संगतता।
- TypeScript, JSX, CSS-मॉड्यूल के लिए बिल्ट-इन समर्थन।
- Jest से आसान माइग्रेशन।
परीक्षण का उदाहरण (Jest के समान):
// math.ts (या math.js)export function add(a: number, b: number): number { return a + b;}
// mat