Writing unit tests with Jest or Mocha In Hindi
मॉडर्न जावास्क्रिप्ट प्रोग्रामिंग में सॉफ़्टवेयर डेवलपमेंट यूनिट टेस्टिंग एक प्रोसेस है, जहा जावास्क्रिप्ट सॉफ्टवेयर वेब डेवलपर यह तय करता है की जावास्क्रिप्ट प्रोग्राम सोर्स कोड की मल्टीप्ल सिंगल यूनिट जैसे, फ़ंक्शन या मेथड के अनुसार टास्क कर सके। जहा जेस्ट और मोचा दो सबसे अधिक पॉपुलर जावास्क्रिप्ट टेस्टिंग फ्रेमवर्क चॉइस हैं. जो वेब डेवलपर को ऐसा करने में हेल्प कर सकते हैं।

So, let’s now look at both Jest and Mocha in JavaScript programming and how to write unit tests.
Jest JavaScript Testing Framework.
जेस्ट एक पॉपुलर जावास्क्रिप्ट एप्लीकेशन टेस्टिंग फ्रेमवर्क है, जेस्ट टेस्टिंग फ्रेमवर्क को मेटा फेसबुक कंपनी द्वारा डेवलप किया गया है, जहा जेस्ट टेस्टिंग फ्रेमवर्क स्पेशली रूप से रियेक्ट डेवलप एप्लीकेशन टेस्टिंग के लिए पॉपुलर है। जहा जेस्ट फ्रेमवर्क अपने आप में एक ऑल-इन-वन वेब एप्प्स टेस्टिंग फ्रेमवर्क एनवायरनमेंट है, जो की जावास्क्रिप्ट एप्प्स डेवलपर को यूनिट टेस्टिंग में एक टेस्ट रनर, एश्योरेंस लाइब्रेरी, और मॉकिंग फीचर्स प्रोवाइड करता है।
Setting up the Jest framework for testing.
वेब एप्प्स यूनिट टेस्टिंग के लिए जेस्ट का यूज़ करने से पहले डेवलपर को इसे अपने कंप्यूटर में मैन्युअल इंस्टॉल करना होगा। यदि यहाँ डेवेलपर Node.js या जावास्क्रिप्ट प्रोजेक्ट पर काम कर रहा हैं, तो डेवलपर इसे npm के माध्यम से इंस्टॉल कर सकते हैं.
Jest framework install syntax.
npm install –save-dev jest
यहाँ डेवलपर जेस्ट कमांड को यूज़ करके या अपनी package.json फ़ाइल में स्क्रिप्ट को ऐड करके यूनिट टेस्टिंग कर सकते हैं.
{
“scripts”: {
“test”: “jest”
}
}
Writing tests in the Jest unit testing framework.
जेस्ट टेस्टिंग फ्रेमवर्क में यूनिट टेस्ट परफॉरमेंस में सामान्यता किसी फ़ंक्शनैलिटी को एक्सप्लेन करना और इसमें यह तय करना होता है कि डेवेलपर द्वारा एक्सपेक्टेड प्रोग्राम टेस्टिंग आउटपुट एक्चुअल प्रोग्राम सोर्स कोड आउटपुट से एक्जैक्ट मिलता जुलता हो।
Here is an example of a basic test in the Jest testing framework.
// this is a total.js script file
function total(p, q) {
return p + q;
}
module.exports = total;
// let total.test.js file
const total = require(‘./total’);
test(‘let total of 3 + 4 is equivalent to 7’, () => {
expect(total(3, 4)).toBe(7);
});
Here in this Jest unit testing example.
यहाँ जेस्ट टेस्ट का यूज़ एक टेस्टिंग केस कंडीशन को डिफाइन करने में किया जाता है, जहाँ यूजर एक टोटल बिहैवियर को एक्सप्लेन करते हैं. जैसे, 3 + 4 को टोटल करके 7 आउटपुट रिसीव होता है।
यहाँ expect एक अभिकथन फ़ंक्शन बनाया गया है, और toBe दोनों को चेक कर ऐड करता है, जो की टेस्टिंग प्रोसेस में टेस्ट करता है कि आउटपुट एक्सपेक्टेड वैल्यू के एग्जेक्ट इक्वल है या नहीं है।
Common Jest matchers in the Jest unit testing framework.
- toBe(value) – यह जेस्ट टेस्टिंग फ्रेमवर्क में टेस्ट करता है कि वैल्यू एक्सपेक्टेड वैल्यू के इक्वल है या नहीं है।
- toEqual(value) – जेस्ट टेस्टिंग फ्रेमवर्क में यह टेस्ट करता है कि कोई ऑब्जेक्ट एक्सपेक्टेड वैल्यू के बिल्कुल बराबर है, या नहीं है।
- toBeTruthy(), toBeFalsy() – जेस्ट टेस्टिंग फ्रेमवर्क में टेस्ट करता है कि वैल्यू ट्रू है या फाल्स है।
- toBeGreaterThan(number), toBeLessThan(number) – जेस्ट टेस्टिंग फ्रेमवर्क में चेक करता है कि वैल्यू इंडिकेटेड नंबर से बिग या स्माल है।
Running Jest tests in JavaScript programming.
जावास्क्रिप्ट में जेस्ट टेस्टिंग को रन करने के लिए यूजर को निचे दिए गए कमांड को अप्लाई करना होगा।
npm total
यहाँ जेस्ट टेस्टिंग फ्रेमवर्क यूजर प्रोजेक्ट .total.js सफिक्स वाली सभी टेस्टिंग फ़ाइलों को ऑटोमेटिकली फाइंड कर रन करेगा।
Key features of Jest testing framework.
- jest Snapshot testing – जेस्ट टेस्टिंग फ्रेमवर्क आटोमेटिक रूप से जरूरत पड़ने पर रिएक्ट कम्पोनेनेट या किसी भी वैल्यू के स्नैपशॉट को कैप्चर कर सकता है, और टाइम टू टाइम उनकी तुलना करके यह तय कर सकता है कि कोई अनएक्सपेक्टेड चेंज या मॉडिफिकेशन न हो।
- jest Mocking – जेस्ट यूनिट टेस्टिंग फ्रेमवर्क यूजर को फ़ंक्शन, मॉड्यूल और यहाँ तक कि टाइमर का भी मॉक फीचर्स प्रोवाइड करता है।
- jest code coverage – जेस्ट यूनिट टेस्टिंग फ्रेमवर्क प्रोग्राम सोर्स कोड कवरेज रिपोर्ट क्रिएट कर सकता है, जो यह इंडीकेट करता है कि यूजर प्रोग्राम कोड का कितना पोरशन टेस्टिंग में कवर किया गया है।
Mocha is a flexible JavaScript Testing Framework.
मोचा यूनिट टेस्टिंग फ्रेमवर्क जावास्क्रिप्ट प्रोग्रामिंग के लिए एक और पॉपुलर टेस्टिंग फ्रेमवर्क है, जहा मोचा यूनिट टेस्टिंग फ्रेमवर्क इसके फ्लेक्सिबिलिटी के लिए पॉपुलर है। जेस्ट यूनिट टेस्टिंग फ्रेमवर्क के अपोजिट, मोचा यूनिट टेस्टिंग फ्रेमवर्क किसी अभिकथन लाइब्रेरी या मॉकिंग फ्रेमवर्क के साथ रेडीमेड नहीं मिलता है। यहाँ यूजर डेवलपर को अपनी जरूरत के अनुसार इसे डिजायर मल्टीप्ल अभिकथन लाइब्रेरी से कनेक्ट करना होता हैं और यूजर इसे मॉक और स्पाई के लिए सिनॉन जैसे अन्य टूल को अप्लाई कर सकते हैं।
Setting up the Mocha testing framework.
जावास्क्रिप्ट में मोचा और चाय अभिकथन के लिए इंस्टॉल करना।
npm install –save-dev mocha chai
To run Mocha unit testing, add a script to your package.json.
{
“scripts”: {
“test”: “mocha”
}
}
Creating tests in Mocha unit testing.
यहाँ जावास्क्रिप्ट मोचा में चाय को यूज़ करके अभिकथन के लिए एक सरल मोचा टेस्टिंग दिया गया है.
// let create total.js script
function total(p, q) {
return p + q;
}
module.exports = total;
/ check total.test.js
const total = require(‘./total’);
const { expect } = require(‘chai’);
describe(‘total function s’, () => {
it(‘hare we add 4 + 4 is to equal 8’, () => {
expect(total(4, 4)).to.equal(8);
});
});
Here in the above Mocha testing example.
यहाँ मोचा टेस्टिंग में रिलेटेड टेस्टिंग को ग्रुप करने के लिए describe को यूज़ किया गया है, जो मौजूदा टेस्टिंग की कैपेसिटी या मॉड्यूल के आधार पर मल्टीप्ल टेस्टिंग को अरेंज करने में यूज़फुल है।
यहाँ मोचा एक एकल टेस्टिंग केस को एक डिस्क्रिप्शन और एक कॉलबैक फ़ंक्शन के साथ डिफाइन करता है, जिसमें अभिकथन होता है।
जिसमे expect वर्ड का यूज़ अभिकथनों के लिए किया गया है, इस कंडीशन में Chai से, और .to.equal प्रोग्राम में इक्वलिटी को टेस्ट करता है।
Chai assertion statement with normal Mocha.
- .to.equal(value) – यह मोचा में चाय प्रोग्राम टेस्टिंग प्रोसेस में चेक करता है कि क्या दो वैल्यू इक्वल हैं।
- .to.be.true, .to.be.false – यह मोचा में चाय प्रोग्राम टेस्टिंग प्रोसेस में बूलियन वैल्यू को टेस्ट करता है।
- .to.be.a(‘type’) – यह मोचा में चाय प्रोग्राम टेस्टिंग प्रोसेस में वैल्यू के डाटा टाइप को टेस्ट करता है।
- .to.have.lengthOf(number) – मोचा में चाय प्रोग्राम टेस्टिंग प्रोसेस में किसी ऐरे या स्ट्रिंग की लंबाई को टेस्ट करता है।
Running Mocha Testing in JavaScript.
अपने प्रोग्राम में मोचा टेस्टिंग को रन करने के लिए निचे दिए गए कमांड को अप्लाई करे.
npm test
यहाँ मोचा टेस्टिंग फ्रेमवर्क .total.js एक्सटेंशन वाली सभी फ़ाइलें को फाइंड कर उन्हें रन करेगा।
Features of Mocha Unit Testing Framework.
- Flexibility – मोचा टेस्टिंग फ्रेमवर्क कोई स्ट्रिक्ट स्ट्रक्चर या अभिकथन लाइब्रेरी को अप्लाई नहीं करता है, इस वजह से यूजर अपनी जरूरत के हिसाब से किसी भी टूल को यूज़ कर सकते हैं।
- Asynchronous Testing – मोचा टेस्टिंग फ्रेमवर्क एसिंक्रोनस टेस्टिंग के लिए बेहतरीन सपोर्ट प्रोवाइड करता है, जो की एसिंक्रोनस प्रोग्राम ऑपरेशन को मैनेज करने के लिए कॉलबैक या प्रॉमिस को यूज़ करता है।
- Hooks – मोचा टेस्टिंग फ्रमवर्क टेस्टिंग के लिए कंडीशन सेट करने और रिमूव करने के लिए हुक पहले, बाद में, प्रत्येक से पहले, प्रत्येक के बाद फीचर्स प्रोवाइड करता है।
Choose Jest vs Mocha Which testing framework to choose?
Choose Jest testing framework if.
- जावास्क्रिप्ट डेवलपर यदि रिएक्ट फ्रेमवर्क लाइब्रेरी या अन्य मॉडर्न जावास्क्रिप्ट फ्रेमवर्क को यूज़ कर रहे हैं।
- जहा डेवेलपर मिनिमम कॉन्फ़िगरेशन के साथ एक ऑल-इन-वन सलूशन टेस्ट रनर, अभिकथन लाइब्रेरी, मॉकिंग, फीचर्स को यूज़ करना चाहते हैं।
- जेस्ट टेस्टिंग फ्रेमवर्क में डेवलपर स्नैपशॉट टेस्टिंग या बिल्ट-इन कोड कवरेज की जरूरत है, तो यूज़ करे.
Choose Mocha testing framework if.
- यदि जावास्क्रिप्ट डेवलपर को अपने टेस्टिंग में सेटअप में फ्लेक्सिबिलिटी की जरूरत है, या यूजर अभिकथन और मॉक के लिए विशिष्ट लाइब्रेरी मेनुअल सलेक्ट करना चाहते हैं।
- जहा डेवलपर को Node.js एनवायरनमेंट को यूज़ कर रहे हैं, या टेस्टिंग एक्सेक्यूशन में अधिक सूक्ष्म कण्ट्रोल की जरूरत है।
- इसके अतिरिक्त डेवलपर टूल जैसे, चाय और सिनोन को अपने टेस्टिंग फ्रेमवर्क सेटअप और इंटीग्रेट करने में कैपेबल हैं।
major Differences Between Jest and Mocha javascript testing framework
Testing Feature | Jest testing framework | Mocha testing framework |
Test Runner | Jest testing framework contains its Built-in test runner | Where mocha testing framework Needs external test runner (e.g., Mocha) |
Assertion Library | Jest testing framework contains Built-in (expect) | mocha testing framework need External Chai, should, etc. |
Mocking/Spying | Jest testing framework has Built-in mock functions | mocha testing framework External libraries e.g., Sinon |
Configuration | Jest testing framework Zero-config setup before use | mocha testing framework Requires configuration and setup manually |
Snapshot Testing | Jest testing framework has its own snapshot testing | mocha testing framework don’t have its own snapshot testing |
Code Coverage | Jest testing framework has its Built-in code coverage | mocha testing framework Requires external tool e.g., Istanbul |
Speed | Jest testing framework is Fast, optimized for React development library | mocha testing framework its Depends on the setup and tools used |
Flexibility | Jest testing framework is Opinionated and full-featured | mocha testing framework is Highly flexible, can integrate many libraries |
Learning Curve | Jest testing framework is Low, very easy to start | mocha testing framework is Medium, requires more configuration |
Summary of Jest and Mocha testing frameworks in JavaScript.
जावास्क्रिप्ट प्रोग्रामिंग में जेस्ट और मोचा, दोनों ही पॉपुलर जावास्क्रिप्ट में यूनिट टेस्ट क्रिएट करने के लिए बेस्ट विकल्प हैं। जहा जेस्ट टेस्टिंग फ्रेमवर्क एक ऑल-इन-वन टेस्टिंग सलूशन है, जिसमें डेवलपर की ज़रूरत की हर एलिमेंट पहले से मौजूद होते है, जबकि वही मोचा यूनिट टेस्टिंग फ्रेमवर्क ज़्यादा फ्लेक्सिबल और कस्टमाइज फीचर्स प्रोवाइड करता है, जिससे डेवलपर अपनी डिजायर कस्टम लाइब्रेरी और टूल को सलेक्ट कर सकते हैं।
अगर जावास्क्रिप्ट यूजर एक सिंपल, बिना कॉन्फ़िगरेशन वाला जावास्क्रिप्ट यूनिट टेस्टिंग टेस्टिंग फ्रेमवर्क चाहते हैं, स्पेशली, रियेक्ट डेवलपमेंट फ्रेमवर्क ऐप्स के लिए, तो जेस्ट फ्रेमवर्क एक आइडियल एनवायरनमेंट है।
यदि वेब जावास्क्रिप्ट डेवलपर अपने टेस्टिंग फ्रेमवर्क सेटअप में ज़्यादा फ्लेक्सिबिलिटी और कण्ट्रोल चाहते हैं, या अगर डेवलपर पहले से ही चाय और सिनोन को यूज़ कर रहे हैं, तो मोचा टेस्टिंग एक बेहतर फ्रेमवर्क ऑप्शन है।