Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5

Laravel में टेस्टिंग

by
Read Time:8 minsLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

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

वास्तव में, Laravel पहले ही कोर में PHPUnit टेस्टिंग फ्रेमवर्क को सपोर्ट करता है। PHPUnit PHP कम्युनिटी में सबसे लोकप्रिय और व्यापक रूप से स्वीकार्य टेस्टिंग फ्रेमवर्क में से एक है। यह आपको दोनों प्रकार के टेस्ट को बनाने की अनुमति देता है-unit और functional।

हम यूनिट और फंक्शनल टेस्टिंग के लिए बुनियादी परिचय के साथ शुरू करेंगे। जैसे ही हम आगे बढ़ते हैं, हम देखेंगे कि Laravel में यूनिट और फंक्शनल टेस्टिंग कैसे बनाएं। मुझे लगता है कि आप PHPUnit फ्रेमवर्क की मूल बातों से परिचित होंगे क्योंकि हम इस आर्टिकल में Laravel के संदर्भ में इसका पता लगाएंगे।

यूनिट और फंक्शनल टेस्ट

यदि आप पहले से ही PHPUnit फ्रेमवर्क से परिचित हैं, तो आपको पता होना चाहिए कि आप टेस्ट को दो फ्लेवर में विभाजित कर सकते हैं-यूनिट टेस्टिंग और फंक्शनल टेस्टिंग।

यूनिट टेस्ट में, आप किसी दिए गए फ़ंक्शन या मेथड की शुद्धता की टेस्टिंग करते हैं। सबसे महत्वपूर्ण बात यह है कि आप दिए गए समय में अपने कोड के लॉजिक के एक टुकड़े की टेस्टिंग करते हैं।

आपके डेवलपमेंट में, यदि आपको लगता है कि आपके द्वारा इम्प्लीमेंट किये गए मेथड में एक से अधिक लॉजिकल यूनिट हैं, तो बेहतर है की आप इसे अलग अलग मेथड्स में तोड़ लें ताकि हर एक मेथड एक अकेले लॉजिक और टेस्ट करने लायक कोड के टुकड़ो को संभाल सके।

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

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

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

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

  • लॉगिन पेज तक पहुंचने के लिए GET रिक्वेस्ट बनाएं।
  • जांचें कि हम लॉगिन पेज पर हैं या नहीं।
  • लॉगिन पेज पर डेटा पोस्ट करने के लिए POST रिक्वेस्ट जेनरेट करें।
  • जांचें कि सेशन सफलतापूर्वक बनाया गया था या नहीं।

तो इस तरह आप फंक्शनल टेस्टिंग केस बनाते हैं। अगले खंड से, हम ऐसे उदाहरण बनाएंगे जो दिखाएंगे कि Laravel में यूनिट और फंक्शनल टेस्टिंग केस कैसे बनाएं।

आवश्यक शर्तो को सेटअप करना

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

हम Post मॉडल और संबंधित माइग्रेशन को शुरू करने के लिए बनाएंगे। Post मॉडल बनाने के लिए आगे बढ़ें और निम्नलिखित आर्टिसन कमांड चलाएं।

उपर्युक्त कमांड को Post मॉडल क्लास और संबंधित डेटाबेस माइग्रेशन भी बनाना चाहिए।

Post मॉडल क्लास इस तरह दिखनी चाहिए:

और डेटाबेस माइग्रेशन फ़ाइल database/migrations/YYYY_MM_DD_HHMMSS_create_posts_table.php पर बनाई जानी चाहिए।

हम पोस्ट के टाइटल को भी स्टोर करना चाहेंगे। आइए निम्नलिखित की तरह दिखने के लिए Post डेटाबेस माइग्रेशन फ़ाइल के कोड को संशोधित करें।

जैसा कि आप देख सकते हैं, हमने पोस्ट के टाइटल को स्टोर करने के लिए $table->string('name') कॉलम जोड़ा है। इसके बाद, आपको डेटाबेस में उस टेबल को वास्तव में बनाने के लिए केवल माइग्रेट कमांड चलाने की आवश्यकता है।

साथ ही, Post मॉडल को निम्न कंटेंट्स से रेप्लस करें।

हमने अभी accessor मेथड जोड़ा है, जो पोस्ट के टाइटल को संशोधित करता है, और यह वही है जो हम अपने यूनिट टेस्ट केस में टेस्टिंग करेंगे। बस एहि है जहाँ तक Post मॉडल का संबंध है।

इसके बाद, हम app/Http/Controllers/AccessorController.php पर कंट्रोलर फ़ाइल बनाएंगे। हम बाद के स्टेज में फंक्शनल टेस्टिंग केस बनाते हैं तो यह हमारे लिए उपयोगी होगा।

index मेथड में, हम रिक्वेस्ट पैरामीटर से पोस्ट id रिट्रीव करते हैं और पोस्ट मॉडल ऑब्जेक्ट को लोड करने का प्रयास करते हैं।

आइए routes/web.php फ़ाइल में एक संबंधित रूट भी जोड़ें।

और उसे लगाने के बाद, आप यह देखने के लिए http://your-laravel-site.com/accessor/index URL चला सकते हैं कि यह अपेक्षित रूप से काम करता है या नहीं।

यूनिट टेस्टिंग

पिछले सेक्शन में, हमने प्रारंभिक सेटअप किया था जो इस और आने वाले सेक्शंस में हमारे लिए उपयोगी होगा। इस सेक्शन में, हम एक उदाहरण तैयार करने जा रहे हैं जो Laravel में यूनिट टेस्टिंग की कॉन्सेप्ट्स को प्रदर्शित करता है।

हमेशा की तरह, Laravel एक आर्टिसन कमांड प्रदान करता है जो आपको यूनिट टेस्ट केस का बेस टेम्पलेट क्लास बनाने की अनुमति देता है।

AccessorTest यूनिट टेस्ट केस क्लास बनाने के लिए निम्न कमांड चलाएं। यह ध्यान रखना महत्वपूर्ण है कि हम --unit कीवर्ड को पार कर रहे हैं जो यूनिट टेस्ट केस बनाता है, और इसे testing/Unit directory के तहत रखा जाएगा।

और उसे testing/Unit/AccessorTest.php पर निम्न क्लास बनाना चाहिए।

चलिए इसे कुछ सार्थक कोड से बदल दें।

जैसा कि आप देख सकते हैं, कोड बिल्कुल वैसा ही है जैसा कोर PHP में होता। हमने अभी Laravel-स्पेसिफिक डेपेंडेन्सीज़ को इम्पोर्ट किया है जो हमें आवश्यक API का उपयोग करने की अनुमति देते हैं। testAccessorTest मेथड में, हमें Post मॉडल के getNameAttribute मेथड की शुद्धता की टेस्टिंग करना चाहेंगे।

ऐसा करने के लिए, हमने डेटाबेस से एक उदाहरण पोस्ट प्राप्त कर लिया है और $db_post_title वेरिएबल में अपेक्षित आउटपुट तैयार किया है। इसके बाद, हम वही पोस्ट लोड करते हैं जो Eloquent मॉडल का उपयोग करते हैं जो getNameAttribute मेथड को एक्सेक्यूट करता है साथ ही पोस्ट टाइटल तैयार करता है। अंत में, हम सामान्य रूप से दोनों वेरिएबल्स की तुलना करने के लिए assertEquals मेथड का उपयोग करते हैं।

तो Laravel में यूनिट टेस्ट के केसेस को तैयार करने का तरीका है।

फंक्शनल टेस्टिंग

इस सेक्शन में, हम फंक्शनल टेस्टिंग केस तैयार करेंगे जो पहले हमने बनाए गए कंट्रोलर की कार्यक्षमता का टेस्टिंग करेगा।

AccessorTest फंक्शनल टेस्टिंग केस क्लास बनाने के लिए निम्न कमांड चलाएं। चूंकि हम --unit कीवर्ड का उपयोग नहीं कर रहे हैं, इसे एक फंक्शनल टेस्टिंग केस के रूप में माना जाएगा और testing/Feature डायरेक्टरी के तहत रखा जाएगा।

यह tests/Feature/AccessorTest.php पर निम्न क्लास बनाएगा।

आइए इसे निम्न कोड से रिप्लेस करें।

फिर, कोड उन लोगों से परिचित होना चाहिए जिनके पास फंक्शनल टेस्टिंग में पूर्व अनुभव है।

सबसे पहले, हम डेटाबेस से एक उदाहरण पोस्ट ला रहे हैं और $db_post_title वेरिएबल में अपेक्षित आउटपुट तैयार कर रहे हैं। उसके बाद, हम /accessor/index?id=1 सिमुलेट करने का प्रयास करते हैं और $response वेरिएबल में उस रिक्वेस्ट का रिस्पांस लेते हैं।

इसके बाद, हमने अपेक्षित रिस्पांस कोड के साथ $response वेरिएबल में रिस्पांस कोड से मिलान करने का प्रयास किया है। हमारे मामले में, यह 200 होना चाहिए क्योंकि हमें हमारे GET रिक्वेस्ट के लिए वैध रिस्पांस प्राप्त करना चाहिए। इसके अलावा, रिस्पांस में एक टाइटल होना चाहिए जो अपरकेस से शुरू होता है, और यही वह है जिसे हम assertSeeText मेथड का उपयोग करके मिलान करने का प्रयास कर रहे हैं।

और यह फंक्शनल टेस्टिंग केस का एक उदाहरण है। अब, हमारे पास सबकुछ है जिसके ऊपर हम अपने टेस्टिंग चला सकते हैं। आइए आगे बढ़ें और सभी टेस्ट को चलाने के लिए अपने एप्लीकेशन की रुट में निम्न कमांड चलाएं।

इसे आपके एप्लीकेशन में सभी टेस्ट को चलाना चाहिए। आपको एक स्टैण्डर्ड PHPUnit आउटपुट देखना चाहिए जो आपके एप्लिकेशन में टेस्ट और assertion की स्थिति प्रदर्शित करता है।

और उसके साथ, हम इस लेख के अंत में हैं।

निष्कर्ष

आज, हमने Laravel में टेस्टिंग की डिटेल्स को एक्स्प्लोर किया, जो पहले से ही अपने कोर में PHPUnit को सपोर्ट करता है। आर्टिकल यूनिट और फंक्शनल टेस्टिंग के लिए बुनियादी परिचय के साथ शुरू हुआ, और जैसे जैसे हम आगे बढ़े, हमने Laravel के संदर्भ में टेस्टिंग के स्पेसिफिक की खोज की।

इस प्रक्रिया में, हमने कुछ उदाहरण दिखाए जो दर्शाते हैं कि आप आर्टिसन कमांड का उपयोग करके यूनिट और फंक्शनल टेस्टिंग केस कैसे बना सकते हैं।

यदि आप Laravel के साथ शुरुआत कर रहे हैं या अपने ज्ञान, साइट या एक्सटेंशन के साथ एप्लीकेशन को विस्तारित करना चाहते हैं, तो हमारे पास Envato Market में कई प्रकार की चीजें हैं जिनका आप अध्ययन कर सकते हैं।

नीचे दिए गए फ़ीड का उपयोग करके अपने विचार व्यक्त करने में संकोच न करें!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.