एपीआई को होस्ट करना यह सुनिश्चित करने की जिम्मेदारी है कि यह काम करता है। मोचा जैसे उपकरण के साथ स्वचालित परीक्षण से बेहतर और आसान तरीका कोई नहीं है।

आधुनिक सॉफ्टवेयर विकास एपीआई का बहुत उपयोग करता है। वे क्लाइंट-साइड एप्लिकेशन और बैकएंड एप्लिकेशन के साथ-साथ विभिन्न आंतरिक या बाहरी ऐप के बीच एक महत्वपूर्ण कड़ी के रूप में काम करते हैं।

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

इसलिए उत्पादन वातावरण में संभावित सिस्टम विफलताओं को रोकने के लिए विकास के दौरान बग को चिह्नित करने और सुधारने के लिए अपने एपीआई का पूरी तरह से परीक्षण करना महत्वपूर्ण है।

Mocha, Chai और Chai-HTTP का उपयोग करके Node.js API का परीक्षण करना

कहवा एक व्यापक रूप से उपयोग किया जाने वाला परीक्षण ढांचा है जो विभिन्न के साथ संगत है जावास्क्रिप्ट ढांचे. इसकी प्रमुख विशेषताओं में से एक लचीला परीक्षण धावक है जो परीक्षण मामलों को प्रभावी ढंग से प्रबंधित करने और निष्पादित करने की प्रक्रिया को सरल करता है।

यह तुल्यकालिक और अतुल्यकालिक परीक्षण सहित विभिन्न परीक्षण शैलियों का भी समर्थन करता है, जिससे परीक्षण परिदृश्यों की एक विस्तृत श्रृंखला की अनुमति मिलती है।

वहीं दूसरी ओर, चाय और चाय-HTTP अभिकथन पुस्तकालय हैं जिनका उपयोग आप मोचा के संयोजन के साथ कर सकते हैं। चाई अभिव्यंजक और पठनीय अभिकथन इंटरफेस की एक विस्तृत श्रृंखला प्रदान करता है जैसे चाहिए, अपेक्षा और जोर देना। जबकि, चाई-एचटीटीपी, चाई का ही एक विस्तार है, विशेष रूप से HTTP अनुरोधों के परीक्षण और उनकी प्रतिक्रियाओं पर जोर देने के लिए डिज़ाइन किया गया एक इंटरफ़ेस प्रदान करता है।

चाय और चाय-एचटीटीपी के संयोजन में मोचा का उपयोग करके, आप एपीआई का प्रभावी ढंग से परीक्षण कर सकते हैं। परीक्षण वर्कफ़्लो में शामिल हैं:

  • निर्दिष्ट एपीआई समापन बिंदुओं के लिए HTTP अनुरोध करना।
  • अपेक्षित प्रतिक्रियाओं को परिभाषित करना।
  • निर्दिष्ट स्रोत, HTTP स्थिति कोड, और बहुत कुछ से प्राप्त डेटा को मान्य करना।

आप एपीआई त्रुटि परीक्षण परिदृश्यों का अनुकरण भी कर सकते हैं जो ऐसी स्थितियों में उत्पन्न हो सकते हैं और उनके होने की स्थिति में कौन सी कार्रवाइयाँ ट्रिगर होनी चाहिए।

आप इस प्रोजेक्ट का कोड इसमें पा सकते हैं गिटहब रिपॉजिटरी.

Express.js प्रोजेक्ट और MongoDB डेटाबेस सेट करें

प्रारंभ करना, एक एक्सप्रेस वेब सर्वर बनाएँ, और इन पैकेजों को स्थापित करें:

npm स्थापित करें cors dotenv नेवला MongoDB

अगला, एक MongoDB डेटाबेस बनाएँ या क्लाउड पर MongoDB क्लस्टर कॉन्फ़िगर करें. फिर डेटाबेस कनेक्शन URL को कॉपी करें, एक बनाएँ .env रूट डायरेक्टरी में फाइल करें, और डेटाबेस कनेक्शन स्ट्रिंग में पेस्ट करें:

CONNECTION_STRING = "कनेक्शन स्ट्रिंग"

सेटअप प्रक्रिया को पूरा करने के लिए, आपको डेटाबेस कनेक्शन को कॉन्फ़िगर करना होगा और अपने उपयोगकर्ता डेटा के लिए डेटा मॉडल को परिभाषित करना होगा। इस प्रोजेक्ट के GitHub रिपॉजिटरी में कोड का संदर्भ लें:

  • डेटाबेस कनेक्शन को कॉन्फ़िगर करें utils/db.js.
  • उपयोगकर्ता डेटा स्कीमा को परिभाषित करें मॉडल/उपयोगकर्ता.मॉडल.जेएस.

एपीआई मार्गों के लिए हैंडलर कार्यों को परिभाषित करें

नियंत्रक कार्य डेटाबेस में उपयोगकर्ता डेटा के जोड़ और पुनर्प्राप्ति का प्रबंधन करेगा। इन हैंडलर फ़ंक्शंस की कार्यक्षमता सुनिश्चित करने के लिए, आप परीक्षण करेंगे कि क्या वे सफलतापूर्वक डेटाबेस से डेटा पोस्ट और प्राप्त कर सकते हैं।

रूट डायरेक्टरी में एक बनाएँ नियंत्रक/उपयोगकर्ता नियंत्रक.जेएस फ़ाइल और निम्न कोड जोड़ें:

कॉन्स्ट उपयोगकर्ता = ज़रूरत होना('../models/user.model');

Export.registerUser = async (अनुरोध, रेस) => {
कॉन्स्ट {उपयोगकर्ता नाम, पासवर्ड} = req.body;

कोशिश {
इंतजार User.create ({उपयोगकर्ता नाम, पासवर्ड});
res.status (201)।भेजना({ संदेश: 'उपयोगकर्ता सफलतापूर्वक पंजीकृत' });
} पकड़ना (गलती) {
सांत्वना देनालॉग (त्रुटि);
res.status (500)।भेजना({ संदेश: 'एक त्रुटि पाई गई!! ' });
}
};

Export.getUsers = async (अनुरोध, रेस) => {
कोशिश {
कॉन्स्ट उपयोगकर्ता = इंतजार User.find({});
res.json (उपयोगकर्ता);
} पकड़ना (गलती) {
सांत्वना देनालॉग (त्रुटि);
res.status (500)।भेजना({ संदेश: 'एक त्रुटि पाई गई!!' });
}
};

एपीआई मार्गों को परिभाषित करें

कोई नया बनाएं रूट/यूजर रूट्स.जेएस रूट डायरेक्टरी में फाइल करें और निम्न कोड जोड़ें।

कॉन्स्ट एक्सप्रेस = ज़रूरत होना('अभिव्यक्त करना');
कॉन्स्ट राउटर = एक्सप्रेस। राउटर ();
कॉन्स्ट उपयोगकर्ता नियंत्रक = ज़रूरत होना('../नियंत्रक/उपयोगकर्ता नियंत्रक');

रूटर पोस्ट ('/ एपीआई/रजिस्टर', userControllers.registerUser);
राऊटर.गेट ('/एपीआई/उपयोगकर्ता', userControllers.getUsers);
मापांक.निर्यात = रूटर;

अपने सर्वर प्रवेश बिंदु को परिभाषित करें

अपना अपडेट करें सर्वर.जेएस फ़ाइल निम्न कोड के साथ।

कॉन्स्ट एक्सप्रेस = ज़रूरत होना('अभिव्यक्त करना');
कॉन्स्ट कॉर्स = ज़रूरत होना('कॉर्स');
कॉन्स्ट ऐप = एक्सप्रेस ();
कॉन्स्ट पोर्ट = 5000;
ज़रूरत होना('दोतेनव'.कॉन्फिग ();
कॉन्स्ट कनेक्टडीबी = ज़रूरत होना('./utils/db');

कनेक्टडीबी ();

app.use (express.json ());
app.use (express.urlencoded ({ विस्तारित: सत्य }));
app.use (cors ());

कॉन्स्ट उपयोगकर्ता मार्ग = ज़रूरत होना('./रूट्स/यूजररूट्स');
ऐप.उपयोग ('/', यूजर रूट्स);

app.listen (बंदरगाह, () => {
सांत्वना देना।लकड़ी का लट्ठा(`सर्वर सुन रहा है http://localhost:${पोर्ट}`);
});

मापांक.निर्यात = ऐप;

मोचा के साथ टेस्ट केस लिखें और निष्पादित करें

उपयोगकर्ता एपीआई के साथ, आगे बढ़ें और परीक्षण वातावरण को कॉन्फ़िगर करें। सबसे पहले, इन पैकेजों को देव निर्भरताओं के रूप में स्थापित करें।

एनपीएम मोचा चाय चाय स्थापित करें-http --save-dev

अब, निम्न स्क्रिप्ट को अपने package.json फ़ाइल में जोड़ें।

"स्क्रिप्ट्स": {
"परीक्षा": "मोचा-टाइमआउट 10000"
},

यह आदेश परीक्षण मामलों को निष्पादित करेगा - टाइमआउट संपत्ति को उचित मूल्य के साथ जोड़कर आप व्यक्तिगत परीक्षण मामलों को निष्पादित करने के लिए अधिकतम समय को नियंत्रित करने की अनुमति देते हैं।

परीक्षण मामलों के समाप्त होने से पहले परीक्षणों को अनिश्चित काल तक चलने से रोकने या बहुत जल्दी पूरा करने के लिए यह उपयोगी हो सकता है।

एपीआई एंडपॉइंट्स का परीक्षण करें

रूट डायरेक्टरी में, एक नया फोल्डर बनाएं और उसे नाम दें परीक्षा. इस फ़ोल्डर के अंदर एक नया बनाएँ user.tests.js फ़ाइल और पोस्ट समापन बिंदु परीक्षण मामले के लिए निम्न कोड जोड़ें।

कॉन्स्ट चाय = ज़रूरत होना('चाय');
कॉन्स्ट चायहटप = ज़रूरत होना('चाय-एचटीटीपी');
कॉन्स्ट एप = ज़रूरत होना('../सर्वर');

चाई.यूज (चाईएचटीटीपी);
कॉन्स्ट उम्मीद = चाय उम्मीद;

वर्णन करना('उपयोगकर्ता एपीआई', () => {
वर्णन करना('पोस्ट/एपीआई/रजिस्टर', () => {
यह('उपयोगकर्ता पंजीकरण संभालना चाहिए', (किया) => {
चाय अनुरोध (एप्लिकेशन)
।डाक('/ एपीआई/रजिस्टर')
।भेजना({ उपयोगकर्ता नाम: 'परीक्षक', पासवर्ड: 'परीक्षण पासवर्ड' })
।अंत((गलती, रेस) => {
अगर (गलती) {
उम्मीद (res).to.have.status(500);
अपेक्षा (res.body).to.have.property('संदेश'.वह बराबर है ('एक त्रुटि पाई गई!!');
} अन्य {
उम्मीद (res).to.have.status(201);
अपेक्षा (res.body).to.have.property('संदेश')।बराबर('उपयोगकर्ता सफलतापूर्वक पंजीकृत');
}

पूर्ण();
});
});
});
});

यह कोड उपयोगकर्ता एपीआई की उपयोगकर्ता पंजीकरण कार्यक्षमता का परीक्षण करने के लिए चाय और चाय HTTP का उपयोग करके एक परीक्षण मामले को परिभाषित करता है।

यह निर्दिष्ट समापन बिंदु पर एक पोस्ट अनुरोध भेजता है और अपेक्षित एपीआई प्रतिक्रिया के बारे में दावा करता है, यह सत्यापित करता है कि उपयोगकर्ता पंजीकरण कार्यक्षमता सफल थी या कोई त्रुटि हुई थी।

यहाँ परीक्षण मामले के मुख्य घटकों का टूटना है:

  • अपेक्षा करना -यह वस्तु आपको एपीआई से अपेक्षित प्रतिक्रिया के बारे में दावा करने के लिए चाई अभिकथन विधियों का उपयोग करने की अनुमति देती है।
  • वर्णन करना - यह संबंधित परीक्षण मामलों का एक साथ वर्णन करता है, इस मामले में, इससे संबंधित परीक्षण उपयोगकर्ता एपीआई. नेस्टेड डिस्क्राइब आगे के समूहों से संबंधित परीक्षण मामलों को एक साथ ब्लॉक करता है, इस मामले में, पोस्ट/एपीआई/रजिस्टर. यह विशेष रूप से किसी विशेष कार्यक्षमता से संबंधित परीक्षण मामलों को व्यवस्थित करने में मदद करता है।
  • यह - यह फ़ंक्शन एपीआई समापन बिंदु के अपेक्षित व्यवहार का वर्णन करता है।
  • अंत - यह फ़ंक्शन अनुरोध भेजता है और प्रतिक्रिया को संभालने के लिए कॉलबैक फ़ंक्शन प्रदान करता है। कॉलबैक फ़ंक्शन का उपयोग करके अभिकथन करता है अपेक्षा करना एपीआई से प्राप्त प्रतिक्रिया की जांच करने के लिए कार्य।
  • पूर्ण - यह फ़ंक्शन टेस्ट केस के अंत को चिह्नित करने के लिए चलता है।

अंत में, पोस्ट एंडपॉइंट टेस्ट केस के ठीक बाद GET एंडपॉइंट टेस्ट केस के लिए कोड जोड़ें।

वर्णन करना('प्राप्त करें/एपीआई/उपयोगकर्ता', () => {
यह('सभी उपयोगकर्ता डेटा लाना चाहिए', (किया) => {
चाय अनुरोध (एप्लिकेशन)
।पाना('/एपीआई/उपयोगकर्ता')
।अंत((गलती, रेस) => {
अगर (गलती) {
उम्मीद (res).to.have.status(500);
अपेक्षा (res.body).to.have.property('संदेश'.वह बराबर है ('उपयोगकर्ता डेटा प्राप्त करते समय एक त्रुटि हुई');
} अन्य {
उम्मीद (res).to.have.status(200);
उम्मीद (res.body).to.be.an('सरणी');
}

पूर्ण();
});
});
});

आगे बढ़ें और दो परीक्षण मामलों को निष्पादित करने के लिए अपने टर्मिनल पर परीक्षण स्क्रिप्ट चलाएँ।

एनपीएम परीक्षण

यदि परीक्षण मामलों के निष्पादन में कोई त्रुटि नहीं आती है, तो आपको समान आउटपुट देखना चाहिए जो इंगित करता है कि परीक्षण सफलतापूर्वक पारित हो गए हैं।

परीक्षण विफलता विभिन्न कारणों से हो सकती है, जैसे डेटाबेस के लिए HTTP अनुरोधों के दौरान नेटवर्क कनेक्टिविटी समस्याएँ, आवश्यक डेटा गुम होना, तार्किक त्रुटियाँ और अन्य समस्याएँ।

Mocha इस तरह की त्रुटियों को पहचानने और उजागर करने का अच्छा काम करता है, टर्मिनल विंडो पर प्रदर्शित लॉग में स्पष्ट और विस्तृत परीक्षण रिपोर्ट प्रदान करता है। यह आपको उन विशिष्ट मुद्दों की आसानी से पहचान करने और उनका निदान करने की अनुमति देता है जो परीक्षण विफलताओं का कारण बने।

मोचा आपको अपने एपीआई का परीक्षण न करने का कोई बहाना नहीं देता

जबकि पोस्टमैन जैसे टूल का उपयोग करके अपने एपीआई की कार्यक्षमता का मैन्युअल रूप से परीक्षण करना एक वैध परीक्षण है दृष्टिकोण, स्वचालित परीक्षण के लिए मोचा और अन्य परीक्षण ढाँचों का लाभ उठाना इसे अगले तक ले जाता है स्तर।

इन परीक्षण उपकरणों के साथ, आप विभिन्न प्रकार के परिदृश्यों और किनारे के मामलों को कवर करने के लिए परीक्षणों को जल्दी और आसानी से स्वचालित कर सकते हैं। यह आपको अपने एपीआई को तैनात करने से पहले बग का तुरंत पता लगाने और उन्हें हल करने में सक्षम बनाता है, यह सुनिश्चित करता है कि आप उत्पादन के लिए उच्च-गुणवत्ता वाले सॉफ़्टवेयर को शिप करें।