AD

Jest और JavaScript के साथ अपना पहला Unit Test लिखें: कोडिंग स्टूडेंट्स के लिए प्रैक्टिकल गाइड

Jest और JavaScript के साथ अपना पहला Unit Test लिखें: कोडिंग स्टूडेंट्स के लिए प्रैक्टिकल गाइड

कोडिंग स्टूडेंट्स के लिए यूनिट टेस्टिंग क्यों जरूरी है?

जब आप कोडिंग सीखना शुरू करते हैं, तो अपने कोड को चेक करने का आपका सबसे पहला तरीका क्या होता है? शायद ब्राउज़र में आउटपुट देखना या फिर कोड के बीच-बीच में console.log() का इस्तेमाल करना। लेकिन जैसे-जैसे आपके प्रोजेक्ट्स बड़े होते हैं, हर एक फंक्शन को मैन्युअली चेक करना असंभव हो जाता है। यहीं पर काम आती है Unit Testing (यूनिट टेस्टिंग)

यूनिट टेस्टिंग का मतलब है अपने कोड के सबसे छोटे हिस्से (जैसे कि एक सिंगल फंक्शन) को ऑटोमेटिकली टेस्ट करना ताकि यह सुनिश्चित हो सके कि वह उम्मीद के मुताबिक काम कर रहा है या नहीं। यदि आप एक कोडिंग स्टूडेंट हैं और अपने रिज्यूमे को दूसरों से अलग बनाना चाहते हैं, तो यूनिट टेस्टिंग सीखना आपके लिए एक सुपरपावर साबित हो सकता है। आज के इस प्रैक्टिकल गाइड में हम Jest फ्रेमवर्क का उपयोग करके JavaScript में अपना पहला यूनिट टेस्ट लिखना सीखेंगे।

हमें Jest का ही उपयोग क्यों करना चाहिए?

Jest फेसबुक (Meta) द्वारा बनाया गया एक बेहद लोकप्रिय और ओपन-सोर्स JavaScript टेस्टिंग फ्रेमवर्क है। यह दुनिया भर के डेवलपर्स की पहली पसंद है क्योंकि:

  • Zero Configuration: इसे सेटअप करना बेहद आसान है और यह बिना किसी खास कॉन्फिगरेशन के काम करता है।
  • Fast and Safe: यह टेस्ट्स को समानांतर (parallel) चलाता है, जिससे समय की बचत होती है।
  • Great Documentation: इसका डॉक्यूमेंटेशन बहुत ही सरल और बिगिनर-फ्रेंडली है।

यूनिट टेस्टिंग सेटअप करने के स्टेप्स

अपना पहला टेस्ट लिखने के लिए नीचे दिए गए स्टेप्स को ध्यान से फॉलो करें। इसके लिए आपके सिस्टम में Node.js इंस्टॉल होना जरूरी है।

स्टेप 1: नया प्रोजेक्ट बनाएं और इनिशियलाइज़ करें

सबसे पहले अपने टर्मिनल या कमांड प्रॉम्प्ट को खोलें और एक नया फोल्डर बनाकर उसमें जाएं:

mkdir jest-demo
cd jest-demo

अब इस फोल्डर में एक नया Node.js प्रोजेक्ट इनिशियलाइज़ करने के लिए नीचे दी गई कमांड चलाएं:

npm init -y

यह कमांड आपके प्रोजेक्ट में एक package.json फाइल बना देगी।

स्टेप 2: Jest को इंस्टॉल करें

अब हम Jest को एक Development Dependency (devDependency) के रूप में इंस्टॉल करेंगे क्योंकि टेस्टिंग टूल्स की जरूरत केवल डेवलपमेंट के समय होती है, प्रोडक्शन में नहीं:

npm install --save-dev jest

स्टेप 3: package.json में टेस्ट स्क्रिप्ट सेट करें

अपनी package.json फाइल को खोलें और उसमें "scripts" वाले हिस्से को ढूंढें। वहां test स्क्रिप्ट को बदलकर jest कर दें, जैसा कि नीचे दिखाया गया है:

{
  "scripts": {
    "test": "jest"
  }
}

अब लिखते हैं अपना पहला JavaScript कोड और टेस्ट केस

सेटअप पूरा हो चुका है। अब हम एक सिंपल मैथ फंक्शन लिखेंगे और फिर उसका टेस्ट केस तैयार करेंगे।

स्टेप 4: सोर्स कोड फाइल बनाएं

अपने प्रोजेक्ट के रूट फोल्डर में math.js नाम की एक फाइल बनाएं और उसमें दो नंबरों को जोड़ने का एक सिंपल फंक्शन लिखें:

function add(a, b) {
  return a + b;
}

module.exports = { add };

यहाँ हमने add फंक्शन को एक्सपोर्ट किया है ताकि हम इसे अपनी टेस्ट फाइल में इम्पोर्ट कर सकें।

स्टेप 5: टेस्ट फाइल बनाएं (The Test Suite)

Jest को यह बताने के लिए कि कौन सी फाइल टेस्ट फाइल है, हमें फाइल के नाम के अंत में .test.js लगाना होता है। अपने प्रोजेक्ट में math.test.js नाम की फाइल बनाएं और उसमें यह कोड लिखें:

const { add } = require("./math");

test("जोड़ने पर 2 और 3 का आउटपुट 5 होना चाहिए", () => {
  expect(add(2, 3)).toBe(5);
});

इस टेस्ट कोड को समझें:

  • require("./math"): हमने उस फंक्शन को इम्पोर्ट किया जिसे हम टेस्ट करना चाहते हैं।
  • test() फंक्शन: यह Jest का एक इन-बिल्ट फंक्शन है। इसका पहला पैरामीटर टेस्ट का विवरण (Description) है, और दूसरा पैरामीटर एक कॉलबैक फंक्शन है जिसमें एक्चुअल टेस्ट रन होता है।
  • expect() और toBe(): इसे 'Assertion' कहा जाता है। expect(add(2, 3)) हमारे फंक्शन को चलाता है, और toBe(5) यह चेक करता है कि क्या आउटपुट वाकई 5 है।

स्टेप 6: अपना टेस्ट रन करें

अब टर्मिनल में नीचे दी गई कमांड चलाएं:

npm test

बधाई हो! आपको टर्मिनल पर एक सुंदर हरे रंग का PASS मैसेज दिखाई देगा। इसका मतलब है कि आपका पहला यूनिट टेस्ट सफलतापूर्वक पास हो गया है।

कोडिंग स्टूडेंट्स द्वारा की जाने वाली 3 सामान्य गलतियां

यूनिट टेस्टिंग सीखते समय छात्र अक्सर ये गलतियां करते हैं, जिनसे आपको बचना चाहिए:

  1. गलत फाइल नामकरण (Naming Convention): Jest केवल उन्हीं फाइलों को स्कैन करता है जिनके अंत में .test.js या .spec.js होता है। अगर आप सिर्फ math-test.js लिख देंगे, तो Jest उसे रन नहीं करेगा।
  2. फंक्शंस को एक्सपोर्ट न करना: अक्सर स्टूडेंट्स टेस्ट फाइल में फंक्शन को इम्पोर्ट तो कर लेते हैं, लेकिन ओरिजिनल फाइल में module.exports लिखना भूल जाते हैं। इससे 'TypeError: add is not a function' जैसी एरर आती है।
  3. केवल 'Happy Path' को टेस्ट करना: स्टूडेंट्स केवल सही इनपुट (जैसे 2 और 3) के साथ टेस्ट करते हैं। आपको 'Edge Cases' भी टेस्ट करने चाहिए, जैसे- क्या होगा अगर हम नंबर की जगह स्ट्रिंग पास कर दें?

बेहतर टेस्ट लिखने के लिए जरूरी टिप्स (AAA पैटर्न)

इंडस्ट्री में पेशेवर डेवलपर्स टेस्ट लिखने के लिए AAA (Arrange, Act, Assert) पैटर्न का पालन करते हैं। आपको भी अपनी कोडिंग प्रैक्टिस में इसे शामिल करना चाहिए:

  • Arrange (तैयारी): टेस्ट के लिए जरूरी डेटा और वेरिएबल्स सेट करें।
  • Act (कार्रवाई): उस फंक्शन को कॉल करें जिसे आप टेस्ट करना चाहते हैं।
  • Assert (दावा): चेक करें कि क्या आउटपुट आपकी उम्मीद के मुताबिक है।

उदाहरण के लिए:

test("AAA पैटर्न का उदाहरण", () => {
  // 1. Arrange
  const num1 = 10;
  const num2 = 20;

  // 2. Act
  const result = add(num1, num2);

  // 3. Assert
  expect(result).toBe(30);
});

निष्कर्ष

यूनिट टेस्टिंग केवल कोड के एरर्स को ढूंढने के बारे में नहीं है, बल्कि यह आपके सोचने के तरीके को भी बदलती है। जब आप टेस्ट लिखना शुरू करते हैं, तो आप बेहतर और अधिक मॉड्यूलर कोड लिखना सीखते हैं। आज ही अपने किसी भी छोटे प्रोजेक्ट में Jest को इंटीग्रेट करें और अपने गिटहब पोर्टफोलियो को प्रोफेशनल लुक दें!

अक्सर पूछे जाने वाले प्रश्न (FAQs)

1. क्या मुझे अपने प्रोजेक्ट की हर एक लाइन को टेस्ट करना चाहिए?

नहीं, इसे 100% कोड कवरेज कहा जाता है जो हमेशा जरूरी नहीं होता। आपको अपने कोड के मुख्य लॉजिक, कैलकुलेशन और संवेदनशील फंक्शंस (जैसे पेमेंट या ऑथेंटिकेशन) को प्राथमिकता देनी चाहिए।

2. Unit Testing और Integration Testing में क्या अंतर है?

यूनिट टेस्टिंग में हम कोड के एक छोटे हिस्से (जैसे एक फंक्शन) को आइसोलेशन में टेस्ट करते हैं। वहीं इंटीग्रेशन टेस्टिंग में हम यह चेक करते हैं कि अलग-अलग मॉड्यूल्स या फंक्शंस एक साथ मिलकर सही तरीके से काम कर रहे हैं या नहीं।

3. क्या Jest का उपयोग केवल JavaScript के साथ ही किया जा सकता है?

मुख्य रूप से Jest को JavaScript और TypeScript के लिए ही बनाया गया है। लेकिन इसका उपयोग React, Angular, Vue, और Node.js प्रोजेक्ट्स की टेस्टिंग के लिए बड़े पैमाने पर किया जाता है।

Post a Comment

0 Comments