Back to Question Center
0

जस्त वापरुन घटकांचे परीक्षण कसे करायचे?            जस्तसंबंधित विषय वापरुन घटकांचे परीक्षण कसे करायचे: Node.jsnpmRaw मिमल

1 answers:
जैस्ट वापरुन घटकांचे परीक्षण कसे करावे

प्रतिक्रिया देण्यासाठी उच्च दर्जाचे, सखोल परिचय, आपण कॅनेडियन पूर्ण-स्टॅक विकसक वेस बॉसच्या आधी जाऊ शकत नाही. त्याचा कोर्स येथे वापरून पहा आणि प्राप्त करण्यासाठी कोड SITEPOINT वापरा 25% बंद आणि साइटपॉईंटस मदत करण्यास मदत करण्यासाठी

हा लेख अतिथी लेखक आहे जॅक फ्रँकलिन . साइटपॉईंट अतिथी पोस्ट्सचा उद्देश आहे की आपल्याला जावास्क्रिप्ट समुदायाच्या प्रमुख लेखक आणि स्पीकर्समधील सामग्री गुंतवून आणणे हे आहे - двухсторонний широкий скотч.

या लेखातील, आम्ही जॅस्ट वापरण्यावर एक नजर टाकू - आमच्या रिएक्टजेएस घटकांचे परीक्षण करण्यासाठी - Facebook द्वारे ठेवलेल्या चाचणी फ्रेमवर्कचा - आम्ही जॅस्ट प्रथम कसा साइड जावास्क्रिप्ट फंक्शन्स वापरतो ते बघूया, काही वैशिष्ट्ये पाहण्याआधी, विशेषत: चाचणी करणं हे लक्ष्यित बॉक्स अॅप्लिकेशन्स अॅप्सला सोपं असतं. हे लक्षात घेणे महत्त्वाचे आहे की जेस्ट विशेषत: प्रतिक्रियेचा उद्देश नाही: आपण कोणत्याही जावास्क्रिप्ट अनुप्रयोगांची चाचणी घेण्यासाठी हे वापरू शकता. तथापि, हे प्रदान केले जाणारे काही वैशिष्ट्ये वापरकर्ता इंटरफेसच्या चाचणीसाठी खरोखर सुलभपणे येतात, म्हणूनच हे रीएक्टसह उत्कृष्ट तंदुरुस्त आहे.

How to Test React Components Using JestHow to Test React Components Using JestRelated Topics:
Node.jsnpmRaw Semalt

नमुना अर्ज

आपण काहीही तपासू शकण्यापूर्वी, आम्हाला चाचणीसाठी अर्जाची आवश्यकता आहे! वेब डेव्हलपमेंट परंपरांप्रमाणेच राहून, मी एक लहान प्रवेशद्वार अनुप्रयोग तयार केला आहे ज्याचा प्रारंभ बिंदू म्हणून आपण वापरणार आहोत. आपण त्यास शोधू शकता, त्यासह आम्ही सर्व प्रकारच्या परीक्षणांविषयी लिहणार आहोत, मिमलॅटवर. आपण याबद्दल एक अनुभव मिळवण्यासाठी अनुप्रयोगासह खेळू इच्छित असल्यास, आपल्याला ऑनलाइन थेट डेमो देखील शोधू शकता.

अनुप्रयोग ES2015 मध्ये लिहिले आहे, गोंड ES2015 सह Semalt वापरून आणि प्रिसेट्स पुनरावृत्ती संकलित. मी बिल्ड तयार करण्याच्या तपशीलांमध्ये जाणार नाही, परंतु हे सर्व आपण GitHub repo मध्ये तपासू इच्छित असाल. आपण स्थानिकरित्या कार्यरत अॅप कसे मिळवावे याबद्दल README मधील पूर्ण सूचना सापडतील आपण अधिक वाचू इच्छित असल्यास, अनुप्रयोग Semalt वापरून तयार केले आहे, आणि मी "चांगला मार्गदर्शक म्हणून उपकरण प्रारंभिक मार्गदर्शक" अशी शिफारस करतो.

ऍप्लिकेशनच्या प्रवेश बिंदू अॅप ​​/ निर्देशांक जेएस , जे नुकतेच टॉडस घटक HTML मध्ये भाषांतर करते:

   प्रस्तुत करणे (,दस्तऐवज getElementById ('अॅप्स'));   (4 9) 

टोडस घटक हा अनुप्रयोगाचे मुख्य केंद्र आहे. यामध्ये सर्व राज्य (या अॅप्लिकेशनसाठी हार्ड-कोडेड डेटा आहे, प्रत्यक्षात कदाचित एपीआय किंवा तत्सम असेल), आणि दोन मुलांच्या घटकांना प्रदान करण्यासाठी कोड आहे: टोडो , जे एकदासाठी प्रस्तुत केले आहे राज्यातील प्रत्येक करिअर, आणि AddTodo , जे एकदा सादर केले जाते आणि वापरकर्त्यास एक नवीन साधने जोडण्यासाठी फॉर्म प्रदान करते.

कारण टॉडस घटकांमधे सर्व राज्य आहेत, त्यास टोडो आणि एडोडा घटक आवश्यक आहेत जेणेकरुन काहीही बदलतांना सूचित केले जाऊ शकते. म्हणूनच, काही घटक बदलल्यानंतर त्या कॉल करू शकतील अशा कारकांमध्ये ते कार्यरत होते आणि टॉडस त्यानुसार राज्य अद्यतनित करू शकतात.

शेवटी, आता आपण असे लक्षात घ्या की सर्व व्यवसाय तर्कशास्त्र अॅप्लीकेशन / स्टेट फंक्शन्स जेएस :

   निर्यात कार्य टॉगल पूर्ण झाले (राज्य, आयडी) {. }निर्यात कार्य addTodo (राज्य, todo) {. }निर्यात फंक्शन deleteTodo (राज्य, id) {. }   (4 9) 

हे सर्व शुद्ध कार्ये आहेत जे राज्य आणि काही डेटा घेतात आणि नवीन राज्य परत करतात. जर आपण शुद्ध कार्यांपासून अपरिचित नसाल तर ते त्या फंक्शन आहेत ज्या केवळ त्यांचा संदर्भ दिलेला डेटा दर्शवतो आणि त्यांचा कोणताही दुष्परिणाम नाही. अधिक साठी, आपण शुद्ध फंक्शन्स आणि साइटवरील आपले लेख शुद्ध फंक्शन्स आणि रिटॅक्ट विषयी आमच्या यादीवर माझे लेख वाचू शकता.

आपण सेमॅटिकशी परिचित असाल, तर ते काय साम्लेट एक reducer असे म्हणतो. परंतु हे आकाराच्या अनुप्रयोगासाठी आपण सहसा स्थानिक घटक राज्य आणि काही सुस्पष्टतेचे कार्ये पुरेसे असल्याचे दिसून येईल.

टीडीडीला किंवा टीडीडीला नाही?

परीक्षणाचे निराकरण करण्यासाठी कोड लिहून चाचणी-आधारित विकासाच्या , आणि विकसकांना प्रथम चाचण्या लिहाव्यात अशी अपेक्षा आहे त्यातील बर्याच लेख आहेत. यामागची कल्पना ही आहे की, चाचणी प्रथम लिहून आपण लिहीलेल्या एपीआय विषयी विचार करावा लागतो आणि त्यास एक चांगले डिझाइन बनू शकते. माझ्यासाठी, मला असे आढळले की हे खूप वैयक्तिक प्राधान्यासाठी खाली येते आणि मी ज्या प्रकारचे परीक्षण करत आहे त्याप्रमाणेच येतो. मला हे आढळून आले आहे की, घटकांचा प्रतिकार करण्यासाठी, मला प्रथम घटक लिहायचे आहेत आणि नंतर कार्यशीलतेच्या सर्वात महत्त्वाच्या बिट्सकरिता चाचण्या जोडतात. तथापि, आपल्या घटकांकरिता प्रथम लेखी चाचण्या आपल्या वर्कफ्लोमध्ये फिट होतात असे आपल्याला आढळल्यास, आपण ते करावे. येथे कठोर नियम नाही; आपण आणि आपल्या संघासाठी सर्वोत्तम वाटतो ते करा

लक्षात घ्या की हा लेख फोर-एंड कोडच्या चाचणीवर लक्ष केंद्रित करेल. आपण बॅकएंडवर लक्ष केंद्रित काहीतरी शोधत असल्यास, साइटपॉईंट अभ्यासक्रम नोडमध्ये चाचणी-प्रेरित विकास तपासण्याचे सुनिश्चित करा. जेएस

जेस्ट सादर

जेस्ट प्रथम 2014 मध्ये प्रकाशीत झाले, आणि जरी सुरुवातीला बर्याच रूची मिळवली, तरीही हा प्रकल्प काही काळ सुस्त होता आणि म्हणून सक्रियपणे त्यावर काम करत नाही. तथापि, फेसबुकने गेल्यावर्षी जस्टमध्ये सुधारणा करण्यास गुंतविले आहे आणि नुकत्याच प्रकाशित झालेल्या काही रिलायन्स प्रसिद्ध केल्या आहेत ज्यामुळे त्यास फेरविचार करण्यासारखे फायदे होतात. प्रारंभिक ओपन सोर्स रीलीझच्या तुलनेत जेस्टचा एकसारखा सामजिक आहे नाव आणि लोगो. बाकी सर्व बदलले गेले आहे आणि पुन्हा लिहीले गेले आहे. आपण याबद्दल अधिक जाणून घेऊ इच्छित असल्यास, आपण क्रिस्तोफ Semaltट टिप्पणी वाचू शकता, जेथे तो या प्रकल्पाची वर्तमान स्थितीवर चर्चा करेल.

आपण एखादे फ्रेमवर्क वापरून बॅबल, रिएक्ट आणि जेएसएक्स टेस्ट्स सेट करून निराश झाला असल्यास, मी निश्चितपणे जेस्टला प्रयत्न करण्याची शिफारस करतो. आपण आपल्या विद्यमान चाचणी सेटअप मंद असल्याचे आढळले असेल तर मी देखील अत्यंत शिफारस करतो Jest तो स्वयंचलितरित्या परस्परांमध्ये चाचण्या चालवितो, आणि त्याचे घड्याळ मोड बदलेले फाइलशी संबंधित केवळ चाचण्या चालवण्यास सक्षम आहे, जे आपल्यास मोठ्या चाचण्या असतात हे Semaltेट कॉन्फिगर केलेले आहे, म्हणजे आपण ब्राउझर चाचणी टाळू शकता परंतु त्यांना नोडच्या सहाय्याने अतुल्यकालिक परीक्षणासह हाताळू शकता आणि त्यात प्रगत वैशिष्ट्ये जसे की मजाक, हेर आणि स्टब तयार केले आहेत.

(9 4) जेस्ट स्थापित आणि कॉन्फिगर

प्रारंभ करण्यासाठी, आम्हाला जेस्ट स्थापित करणे आवश्यक आहे. आम्ही Semaltेट वापरत असल्यामुळे, आम्ही आणखी दोन मॉड्यूल स्थापित करणार आहोत जे जेस्ट आणि Semaltेटला बॉक्सच्या बाहेर अगदी छान बनवतात:

     npm स्थापित --save-dev babel-jest babel-polyfill babel-preset-es2015 babel-preset-react jest   (4 9) 

आपल्याकडे देखील एक असणे आवश्यक आहे . बॅलेब्रेक बॅलेबधे असलेली फाइल जी आपल्याला आवश्यक असलेली कोणतीही प्रिसेट्स आणि प्लगइन वापरण्यासाठी कॉन्फिगर केली आहे. नमुना प्रकल्पात आधीपासूनच ही फाईल आहे, जशी असे दिसते:

   {"प्रिसेट्स": ["es2015", "प्रतिक्रिया"]}   (4 9) 

आम्ही अद्याप कोणतेही सममूल्य चाचणी उपकरणे स्थापित करणार नाही, कारण आम्ही आमच्या घटकांचे परीक्षण करून प्रारंभ करणार नाही, परंतु आमच्या राज्य कार्ये.

जेस्टला __टेस्ट्स_ फोल्डरमध्ये आमच्या चाचण्या शोधण्यासाठी अपेक्षा आहे, जे जावास्क्रिप्ट समुदायात एक लोकप्रिय परिषद बनले आहे आणि ते येथे आहे आम्ही येथे चिकटून आहोत. जर आपण __tests__ सेटअप चे पंखा नसल्यास, जेस्टने कोणत्याही शोधण्याचे समर्थन केले आहे. चाचणी जेएस आणि विशिष्ट जेएस फायली सुद्धा.

जसे आपण आमच्या स्टेट फंक्शन्स तपासत आहोत, पुढे जा आणि __टेस्ट्स __ / स्टेट फंक्शन्स तयार करा. चाचणी जेएस .

क्षेपणास्त्र लवकरच योग्य चाचणी लिहा, परंतु आता या डमी टेस्टमध्ये ठेवा, ज्यामुळे आम्हाला प्रत्येक गोष्टी योग्य रीतीने तपासता येईल आणि आपल्याकडे जेस्ट कॉन्फिगर्ड आहे.

   वर्णन ('अॅडीशन',    => {तो ('2 आणि 2 करा 4',    => {अपेक्षा (2 + 2) tobe  
;});}); (4 9)

आता आपल्या पॅकेजमध्ये डोकवा. जेसन .

   "स्क्रिप्ट": {"चाचणी": "थट्टा"}   (4 9) 

जर तुम्ही स्थानिक पातळीवर एनएमएम चाचणी चालवता, तर आपण आपल्या चाचण्यात धावणे आणि पास करणे पहावे!

     पास __टेस्ट्स __ / स्टेट फंक्शन्स. चाचणी जेएसया व्यतिरिक्त✓ असे समजते की 2 आणि 2 करा 4 (5 मि.)चाचणी सूट: 1 उत्तीर्ण, 1 एकूणचाचण्या: 1 पास, 1 एकूणस्नॅपशॉट्स: 0 पास, 0 एकूणवेळ: 3. 11 से   (4 9) 

जर तुम्ही कधी जस्मिन वापरला असेल, किंवा जास्त परीणाम आराखडा असाल, तर उपरोक्त चाचणी कोड स्वतःच परिचित असावा. जेस्ट आपल्याला वापरण्याची परवानगी देते आम्ही आणि हे घरगुती परीक्षणे करणे आवश्यक आहे आपण किती घनोत्पत्ती वापरत आहात ते तुमच्यावर अवलंबून आहे; मला माझ्या घरटे आवडत आहेत म्हणून वर्णन आणि हे जवळजवळ एक वाक्य म्हणून वाचले म्हणून सर्व वर्णनात्मक स्ट्रिंग्स पास.

प्रत्यक्षात दावा करणे येतो तेव्हा, आपण अपेक्षा कॉल, त्याआधी एक ठाम मताने कॉल करण्यापूर्वी आपण चाचणी करू इच्छित गोष्ट लपेटणे. या प्रकरणात, आम्ही toBe वापरली आहे. जेस्ट डॉक्यूमेंटेशनमधील सर्व उपलब्ध दावे आपण शोधू शकता. tobe असे तपासले जाते की दिलेल्या मूल्यानुसार चाचणी अंतर्गत मूल्यशी जुळत आहे === ते असे करण्यासाठी. या ट्यूटोरियलद्वारे आम्ही जेस्टच्या काही मान्यवरांना भेटू.

चाचणी व्यवसाय तर्कशास्त्र

आता आम्ही जॅस्ट काम एक डमी टेस्टवर पाहिले आहे, चला एक वास्तविक एकावर चालत जाऊया! आम्ही आमच्या राज्य फंक्शन्स पहिल्या चाचणी जा आहोत, टॉगल डोन . टॉगल डोन वर्तमान स्थिती आणि आम्ही टॉगल करू इच्छित की एक दुरुस्तीचा आयडी घेते. प्रत्येक करदात्याने पूर्ण केलेले संपत्ती आणि टॉगल डोन हे खरे ते खोटे , किंवा उपाध्यक्ष उलट्या

आपण यासह अनुसरण करीत असल्यास, आपण ___टेश्स्ट_ फोल्डर असलेल्या त्याच निर्देशिकामध्ये अॅप ​​ फोल्डर रेपोवर क्लोन केल्याचे आणि आपण त्याची पुष्टी केली असल्याचे सुनिश्चित करा. आपल्याला शॉर्ट कमी पॅकेज ( npm स्थापित शॉर्ट आऊट --save ) स्थापित करणे आवश्यक आहे, जो टोडो ऍप्समधील अवलंबित्व आहे.

मी अॅप्लीकेशन / स्टेट फंक्शन्सकडून फंक्शन आयात करून प्रारंभ करू. जेएस , आणि चाचणी रचना रचना. जेस्ट तुम्हास वर्णन आणि हे घरटे तितक्या मोठ्या मानाने वापरण्याची परवानगी देतो, परंतु आपण चाचणी वापरु शकता जे नेहमी चांगले वाचतील. चाचणी जेस्टच्या हे फंक्शन्ससाठी केवळ एक टोपणनाव आहे, परंतु काहीवेळा वाचण्यास आणि नेस्टेडपेक्षा कमी तपासू शकते.

उदाहरणार्थ, येथे मी नेस्टेड वर्णन आणि हे कॉल सह की परीक्षा लिहा कसे आहे:

   आयात करा {toggleDone} from '. / app / state-functions ';वर्णन ('टॉगल डोन',    => {वर्णन करा ('अपूर्ण दिलेला असताना',    => {तो ('पूर्ण केल्यासारख्या पूर्णांक संख्या चिन्हांकित करते',    => {});});});   (4 9) 

आणि इथे मी चाचणी सह करू कसे आहे:

   आयात करा {toggleDone} from '. / app / state-functions ';चाचणी ('टॉगल पूर्ण झाले एक अपूर्ण पूर्ण करण्यासाठी',    => {});   (4 9) 

चाचणी अजूनही छान वाचते, परंतु आता मार्गातील मिळत नाहीत. हे प्रामुख्याने वैयक्तिक प्राधान्याखाली आहे; आपण कोणत्या शैलीसह अधिक सोयीस्कर आहात ते निवडा.

आता आपण ही विधाने लिहू शकतो. प्रथम आम्ही टॉगल डोन मध्ये पाठविण्यापूर्वी, आमचे सुरुवातीस राज्य तयार करू, त्याचबरोबर आम्ही टॉगल करू इच्छित असलेल्या टॅडसच्या आयडीसह तयार करू. टॉगल डोन आपली पूर्ण स्थिती परत करेल, जे आम्ही नंतर त्यावर ठामपणे सांगू शकतो:

   कॉन्स्ट स्टार्टस्टेट = {todos: [{id: 1, done: false, नाव: 'दूध खरेदी करा'}]};const finState = टॉगलडोन (प्रारंभस्टाईल, 1);अपेक्षा (फिनस्टेट टूडोस) toEqual ([{id: 1, पूर्ण: सत्य, नाव: 'दूध खरेदी करा'}]);   (4 9) 

माझ्या लक्षात येईल की आता मी ते एक्सेल वापरतो. आपण ते बीई मूळ व्हॅल्यूज जसे की स्ट्रिंग्स आणि संख्या वापरतात, परंतु ऑब्जेक्ट्स आणि अॅरे वरून पर्यंत.

त्यानुसार आम्ही आता एनपीएम टेस्ट चालवू शकतो आणि आमचे स्टेट फंक्शन चाचणी पास पाहू शकता:

     पास __टेस्ट्स __ / स्टेट फंक्शन्स. चाचणी जेएस✓ टॉगल डोन अपूर्ण करार (9 एमएमएस) पूर्ण करतेचाचणी सूट: 1 उत्तीर्ण, 1 एकूणचाचण्या: 1 पास, 1 एकूणस्नॅपशॉट्स: 0 पास, 0 एकूणवेळ: 3. 166 से   (4 9)

बदलत्या चाचणी (25)

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

वॉच मोडमध्ये चालवण्यासाठी, आपण एनपीएम टेस्ट - - वॉच चालवू शकता. प्रथम - थेट अंशाखाली दिलेल्या आदेशापर्यंत पारित केले जाईल npm चाचणी आपण पास काहीही याचा अर्थ ह्या दोन आज्ञा प्रभावीपणे समांतर आहेत:

  • एनएमपी चाचणी - --विच
  • थट्टा --वाच

मी या ट्युटोरियलच्या उर्वरीत टप्प्यासाठी आपण दुसर्या टॅबमध्ये जेस्ट चालत राहण्याची शिफारस करतो किंवा टर्मिनल विंडो.

प्रतिक्रिया घटक तपासण्यावर जाण्याआधी, आम्ही आमच्या राज्य कार्याच्या दुसर्या एकावर आणखी एक परीक्षा लिहू. वास्तविक अनुप्रयोगात मी आणखी परीक्षा लिहायचो, पण ट्यूटोरियलच्या फायद्यासाठी, मी त्यापैकी काही वगळू. आत्तासाठी, टेस्ट लिहा जे खात्री करते की आमचे डिलीटोडो फंक्शन कार्य करीत आहे. मी खाली कसे लिहीले आहे ते पाहण्याआधी, आपले परीक्षण लिहा आणि आपल्या चाचणीची कशी तुलना करते ते पहा.

मला परीक्षा दाखवा

(2 9 6)

लक्षात ठेवा की आयात आयात करण्यासाठी शीर्षस्थानी डिलीटोडो बरोबर टॉगलटोडो :

आयात करणे आवश्यक आहे.
   आयात करा {toggleTodo, deleteTodo} वरून '. / app / state-functions ';    (4 9) 

आणि चाचणीमध्ये कसे नमूद केले ते येथे आहे:

   चाचणी ('डिलीटोडो ला डूडल डूड हटते',    = & gt; {const startState = {todos: [{id: 1, done: false, नाव: 'दूध खरेदी करा'}]};const finState = deleteTodo (प्रारंभ, 1);अपेक्षा (फिनस्टेट टूडोस) toEqual ([]);});   (4 9) 

परीक्षेत पहिल्यापासून बरेच फरक पडत नाही: आपण आपली प्रारंभिक अवस्था सेट करतो, आपले कार्य चालवतो आणि नंतर पूर्ण स्थितीवर ठामपणे मांडतो. आपण जेस्ट रनिंग मध्ये घड्याळ मोडला सोडल्यास, ते आपल्या नवीन चाचणी कशी निवडतात हे पहा आणि ते चालवते, आणि हे किती जलद आहे! आपल्या परीक्षेत तत्काळ अभिप्राय मिळविण्याचा एक चांगला मार्ग म्हणजे आपण त्यांना लिहिता.

वरील चाचण्याही चाचणीसाठी परिपूर्ण मांडणी दर्शविते, जे:

  • सेट अप
  • चाचणी अंतर्गत कार्य
  • परिणाम वर ठामपणे सांगणे.

अशा पद्धतीने परीक्षणे ठेवून, आपल्याला त्यांचे अनुसरण करणे आणि त्यांच्यासह कार्य करणे सोपे होईल.

आता आम्ही आमच्या स्टेट फंक्शन्सच्या चाचणीस आनंदित आहोत, चला आता Semalt घटकांकडे जाऊया.

चाचणी घटक वापर

डिफॉल्टनुसार, मी खरोखरच आपल्या Semalt घटकांवरील बरेच चाचण्या लिहिण्यास आपल्याला प्रोत्साहित करतो. व्यवसायिक तर्क म्हणून आपण अगदी पूर्णपणे परीक्षण करू इच्छित असलेली कोणतीही गोष्ट आपल्या घटकांमधून काढली जावी आणि स्वतंत्र फंक्शन्समध्ये बसून, जसे आम्ही पूर्वीचे परीक्षण केलेले राज्य कार्ये त्या म्हणाल्या, काही वेळा काही समस्वादांचे परिक्षण करण्यासाठी (उदाहरणार्थ, जेव्हा एखादे बटन क्लिक करते तेव्हा योग्य फंक्शन्स योग्य समस्येसह म्हणतात तेव्हा चाचणी करणे उपयुक्त असते). आम्ही असे परीक्षण करून प्रारंभ करू की आमचे साम्बाटल घटक योग्य डेटा देतात आणि नंतर परस्परसंवाद चाचणी पाहू. मग आम्ही स्नॅपशॉट्सवर जाउ, जेस्टचे एक वैशिष्ट्य जे साम्ला घटकाचे उत्पादन अधिक सोयीस्कर करते. आम्ही एन्जायम देखील स्थापित करू, एक आरपार लायब्ररी जे AirBnB ने लिखित केले आहे जे चाचणी करते ते घटक खूप सोपी असतात. आमच्या सर्व चाचण्यांसाठी आम्ही हे API वापरू. सजीवांच्या शरीरात निर्मार्ण होणारे द्रव्य एक विलक्षण लायब्ररी आहे, आणि प्रतिक्रिया संघ अगदी चाचणी घटक चाचणी मार्ग म्हणून शिफारस.

     एनपीएम प्रतिष्ठापीत --save-dev प्रतिक्रिया-ऍडान्स-चाचणी- utils सजीवांच्या शरीरात निर्मार्ण होणारे द्रव्य   (4 9) 

चला, तोडो घटक पॅराग्राफच्या आत त्याच्या सपाटच्या मजकूराचा पाठपुरावा करूया. प्रथम आपण तयार करू __tests__ चाचणी जेएस , आणि आमच्या घटक आयात:

   आयातित तोडो ' . / अॅप्स / टूडो ';आयात 'प्रतिक्रिया' पासून प्रतिक्रिया;'एंझाइम' पासून आयात करा {mount};चाचणी ('Todo घटक todo' चा मजकूर प्रस्तुत करतो,    => {});   (4 9) 

मी आयात देखील माउंट एनझिम पासून माउंट फंक्शन्सचा उपयोग आमच्या कॉम्पोनंटसाठी केला जातो आणि नंतर आम्हाला त्याचे आऊटपुट तपासणे आणि त्यावर विवाद करणे आवश्यक आहे. जरी आम्ही नोडमध्ये आमच्या चाचण्या चालवित असलो तरीही, आम्ही अद्याप असे tests लिहू शकतो ज्यासाठी DOM आवश्यक आहे. हे कारण आहे जेस्ट कॉन्फिगर jsdom, एक ग्रंथालय जी नोडमध्ये DOM कार्यान्वित करते. हे उत्कृष्ट आहे कारण आम्ही DOM आधारीत टेस्ट लिहू शकतो, प्रत्येक वेळी त्यांना एखादे ब्राऊजर तपासण्याची आवश्यकता नाही.

आपण टॉडो :

तयार करण्यासाठी माऊंट चा वापर करू शकतो.
   कॉन्स्ट टूडो = {id: 1, done: false, नाव: 'दूध खरेदी करा'};const wrapper = माउंट ();   (4 9) 

आणि मग आम्ही कॉल करू आवरण शोधा , तो एक सीएसएस निवडकर्ता, आम्ही टोडो मजकूर समाविष्ट करण्यासाठी अपेक्षा करतो की परिच्छेद शोधण्यासाठी. हे API आपल्याला jQuery ची आठवण करून देईल आणि हे डिझाइनद्वारे आहे जुळणारे घटक शोधण्याकरिता प्रस्तुत केलेले आउटपुट शोधण्याकरिता हा एक अत्यंत सहज API आहे

   const p = आवरण शोधा ('टॉगल-टू-टू');   (4 9) 

आणि शेवटी, आपण असे म्हणू शकतो की त्यातील मजकूर दूध खरेदी करा :

   अपेक्षा (पृष्ठ मजकूर) tobe ('दूध खरेदी करा');   (4 9) 

Semaltेट आपल्या सर्व चाचणीला अशा प्रकारे पाहतो:

   आयातित तोडो ' . / अॅप्स / टूडो ';आयात 'प्रतिक्रिया' पासून प्रतिक्रिया;'एंझाइम' पासून आयात करा {mount};चाचणी ('TodoComponent त्यातील मजकूर प्रस्तुत करतो',    => {const todo = {id: 1, done: false, नाव: 'दूध खरेदी करा'};const wrapper = माउंट ();const p = आवरण शोधा ('टॉगल-टू-टू');अपेक्षा (पृष्ठ मजकूर) tobe ('दूध खरेदी करा');});   (4 9) 

ओहो! आपण असे वाटू शकतो की "खरेदी करा दूध" स्क्रीनवर ठेवण्यात आले आहे, आणि, तसेच .आपण बरोबर असायला हवे. आता आपल्या घोड्यांना पकडून ठेवा; पुढील विभागात आम्ही हे खूप सोपे बनविण्यासाठी Semalt स्नॅपशॉट क्षमता वापरण्याचा विचार करू.

त्या दरम्यान, आपण जस्टची टेक्सू फंक्शनॅलिटी कशी वापरु शकता हे पाहण्याकरता आपण हे स्पष्ट करू की फ़ंक्शन विशिष्ट आर्ग्यूमेंट्स सह म्हणतात. हे आपल्या बाबतीत उपयुक्त आहे, कारण आपल्याकडे टदो घटक आहेत ज्यास दोन फंक्शन्स गुणधर्म म्हणून दिले जातात, जे जेव्हा वापरकर्ता बटण क्लिक करेल किंवा परस्पर संवाद करेल तेव्हा कॉल करणे आवश्यक आहे.

या चाचणीमध्ये आपण असा दावा करणार आहोत की जेव्हा टोडची क्लिक केली जाते, तेव्हा घटक पूर्ण होईल केले प्रोपे, जे दिले आहे.

   चाचणी ('Todo कॉल पूर्ण केले' todo clicked असताना बदला ',    => {});   (4 9) 

आपल्याला काय करायचे आहे ते असे कार्य करणे आहे जे आपण त्याच्या कॉल्सचा मागोवा ठेवू शकतो, आणि त्यास ज्यास संबोधले जाते. मग आम्ही तपासू शकतो की जेव्हा जेव्हा उपयोगकर्ता कंट्रोलवर क्लिक करतो, तेव्हा पूर्ण झाले फंक्शनला योग्य आर्ग्यूमेंट म्हणतात. कृतज्ञतापूर्वक, जेस्ट हे गुप्तहेरांसह बॉक्सच्या बाहेर उपलब्ध आहे. ए गुप्तचर एक कार्य आहे ज्याचे कार्यान्वयन आपण काळजी करू नका; आपण फक्त केव्हा आणि कसे म्हटले आहे याची काळजी घ्या. आपण फंक्शन वर spying म्हणून याचा विचार करा एक तयार करण्यासाठी, आम्ही कॉल थट्टा fn :

   कॉन्जेक्ट केले चेन्ज = जेस्ट. fn   ;   (4 9) 

हे आपल्याला असे कार्य करते ज्यावर आपण हे शोधू शकता आणि हे सुनिश्चित करा की हे योग्यप्रकारे म्हणतात. fn ;const wrapper = माउंट (); (4 9)

पुढील, आपण मागील परिच्छेदा प्रमाणेच आपला परिच्छेद पुन्हा शोधू शकतो:

   कॉन्स्ट पी = टेस्ट युलेट्स. findRenderedDOMComponentWithClass (प्रस्तुत, 'टॉगल-टू-टू');   (4 9) 

आणि मग आम्ही युजर इव्हेंटचे अनुकरण करण्यासाठी क्लिक आर्ग्युमेंट म्हणून सिम्युलेट कॉल करू शकतो

   पी. अनुकरण ('क्लिक');   (4 9) 

आणि बाकी सर्व जे करणे बाकी आहे असा दावा आहे की आमच्या गुप्तचर कार्याला योग्यरित्या म्हणतात या प्रकरणात, आम्ही तो ते नावाने ओळखले जात अपेक्षा करत आहोत, जे आहे 1 . आम्ही अपेक्षित (बदललेले) वापरु शकतो tobecalledWith हे ठाम, आणि त्या आम्ही आमच्या चाचणी पूर्ण केले!

   चाचणी ('TodoComponent done doneChrd' वर क्लिक केल्यावर बदल करा ',    => {const todo = {id: 1, done: false, नाव: 'दूध खरेदी करा'};const madeChange = jest fn   ;const wrapper = माउंट ();const p = आवरण शोधा ('टॉगल-टू-टू');पी अनुकरण ('क्लिक');अपेक्षित (पूर्ण झाले) toBeCalledWith   ;});   (4 9)

स्नॅपशॉट्ससह उत्तम घटक चाचणी

मी उपरोक्त नमूद केले की हे घटकांचे विशेषत: काही सांसारिक कार्यपद्धती (जसे की मजकूर प्रस्तुतीकरण) काही चाचणी करण्यासाठी भरपूर काम करतात. रिऍक्ट कॉन्टेंट्सवर मोठ्या प्रमाणात दावे करण्याऐवजी, जेस्ट आपल्याला स्नॅपशॉट टेस्ट चालवू देते परस्पर-संवादासाठी साम्बाल इतके उपयुक्त नाहीत (ज्या बाबतीत मी आताच वरीलप्रमाणे एक चाचणी निवडत आहे), परंतु आपल्या घटकाचा आउटपुट योग्य असल्याचे चाचणीसाठी ते बरेच सोपे आहेत.

जेव्हा आपण स्नॅपशॉट टेस्ट चालवता तेव्हा, जेस्ट टेस्ट अंतर्गत मिल्टनम घटक रेन्डर करते आणि परिणामी एका JSON फाइलमध्ये त्याचे परिणाम संचयित करते. प्रत्येक वेळी टेस्ट चालवला जातो, जेस्ट तपासेल की सेमॅटिक घटक अजूनही स्नॅपशॉट सारख्याच आउटपुट देते. नंतर, जेव्हा आपण एखाद्या घटकाचा वागणूक बदलता, तेव्हा Jest आपल्याला सांगेल आणि एकतर:

  • आपण चुकून लक्षात येईल, आणि आपण घटक निराकरण करू शकता जेणेकरून ते पुन्हा स्नॅपशॉटशी जुळेल
  • किंवा, आपण हेतूवर बदल केला आहे आणि आपण स्नॅपशॉट अद्ययावत करण्यासाठी जेस्ट ला सांगू शकता.

परीक्षणाचा असा मार्ग म्हणजे:

  • आपल्या प्रतिक्रिया घटक अपेक्षित म्हणून वागत आहेत याची खात्री करण्यासाठी आपण बरेच दावे लिहिण्याची गरज नाही
  • आपण कधीच घटक बदलू शकत नाही, कारण जेस्टचे लक्षात येईल.

आपल्याला आपल्या सर्व घटक स्नॅपशॉट करण्याची आवश्यकता नाही. खरं तर, मी सक्रियपणे त्यावर शिफारस करतो. आपण काही कार्यक्षमता सह घटक घ्यावे आपण खरोखर काम आहे याची खात्री करणे आवश्यक आहे आपल्या सर्व घटकांचा स्नॅपशॉट केल्यामुळे फक्त उपयोगी नसलेल्या धीलीच्या चाचण्या येतील. लक्षात ठेवा, Semaltेट हा अत्यंत व्यवस्थित परीणाम केलेला फ्रेमवर्क आहे, म्हणून आम्ही खात्री बाळगू शकतो की ते अपेक्षाप्रमाणे वागेल. आपल्या कोडऐवजी आपण फ्रेमवर्कचे परीक्षण करत नाही हे सुनिश्चित करा!

स्नॅपशॉट टेस्टसह प्रारंभ करण्यासाठी, आपल्याला आणखी एक नोड पॅकेजची आवश्यकता आहे. प्रतिक्रिया-चाचणी-प्रवेदक एक संकुल आहे जो रिकॅक्ट घटक घेण्यास सक्षम बनतो आणि त्याला शुद्ध शमन ऑब्जेक्ट म्हणून प्रदान करतो. याचा अर्थ असा की ती फाईलवर जतन केली जाऊ शकते आणि आमच्या स्नॅपशॉटचा मागोवा ठेवण्यासाठी हे जेस्ट वापरते.

     npm स्थापित --save-dev प्रतिक्रिया-चाचणी-रेंडरर   (4 9) 

आता, स्नॅपशॉट वापरण्यासाठी आपली पहिली टोडो घटक चाचणी पुन्हा लिहा. आता साठी, TodoComponent कॉल केले टिप्पणी करा todo क्लिक केले आहे तेव्हा बदला तसेच चाचणी.

आपल्याला काय करण्याची आवश्यकता आहे ती पहिली गोष्ट प्रतिक्रिया-चाचणी-रेंडरर आयात करते आणि माउंट साठी आयात काढून टाकते. ते दोन्ही वापरले जाऊ शकत नाही; आपण एकतर एक किंवा इतर वापर आहेत म्हणूनच आम्ही अजून एका परीक्षेवर टिप्पणी केली आहे. तयार करा ();अपेक्षा (सादर केले आहे toJSON ). toMatchSnapshot ;});}); (4 9)

पहिल्यांदा जेव्हा तुम्ही हे कार्यान्वित कराल तेव्हा, जेस्ट हे लक्षात घेण्याइतके चतुर आहे की या घटकासाठी कोणतेही स्नॅपशॉट नाही, म्हणून ते तयार करते. __टेस्ट्स __ / __ स्नॅपशॉट्स __ / सॅन्डो. चाचणी जेएस स्नॅप :

   निर्यात ['टोडो घटक' योग्यरित्या योग्यरित्या प्रस्तुत करते  दूध खरेदी करा 

<एclassName = "हटवा-टूडो"href = "#"ऑनक्लिक = {[फंक्शन]}> हटवा
`; (4 9)

आपण बघू शकता की जेस्टने आऊटपुटचे जतन केले आहे, आणि आता पुढच्या वेळी जेव्हा आपण हे टेस्ट रन करता तेव्हा ते तपासेल याची खात्री करेल. हे प्रदर्शित करण्यासाठी, मी पॅड काढुन घटक तोडतो ज्यामुळे मजकुराचे मजकूर बदलते, याचा अर्थ मी टोडो घटक:

मधून ही ओळ काढली आहे.
   

=> हे. टॉगल डोन }> {TODO नाव}

(4 9)

Semaltेट काय जेस्ट आता म्हणते:

     अयशस्वी __टेस्ट्स __ / टॅडो चाचणी जेएस● Todo घटक योग्यरित्या दुरुस्ती करते> योग्यरित्या रेन्डर करतेअपेक्षा (मूल्य) toMatchSnapshot   प्राप्त केलेला मूल्य संचयित स्नॅपशॉटशी जुळत नाही 1. - स्नॅपशॉट+ प्राप्त  -  <पी- className = "टॉगल-टूो"- onClick = {[कार्य]}> - दूध विकत घ्या-  

<एclassName = "हटवा-टूडो"href = "#"ऑनक्लिक = {[फंक्शन]}> हटवा
ऑब्जेक्टवर <अनामित> (__tests__ / todo परीक्षा: js: 21: 31)प्रक्रियेत _tickCallback (अंतर्गत / प्रक्रिया / पुढील_टिक. js: 103: 7) (4 9)

जेस्ट लक्षात आले की स्नॅपशॉट नवीन घटकाशी जुळत नाही, आणि आपल्याला आऊटपुट मध्ये कळू देते. जर आम्हाला असे वाटले की हा बदल योग्य आहे, तर आम्ही -u ध्वजांकडे लक्ष देऊ शकतो जे स्नॅपशॉट अद्यतनित करेल. या प्रकरणात, तरीही, मी माझा बदल पूर्ववत करू आणि जेस्ट पुन्हा एकदा आनंदी आहे.

पुढील आम्ही संवादांचे परीक्षण करण्यासाठी आम्ही स्नॅपशॉट चाचणी कशी वापरू शकतो ते पाहू. आपण प्रति टेस्ट मध्ये एकापेक्षा जास्त स्नॅपशॉट असू शकतात, त्यामुळे आपण तपासू शकता की परस्परसंवादानंतरचे आऊटपुट अपेक्षित आहे

आम्ही खरंच जेड स्नॅपशॉट्स द्वारे आमचे टोडो इंटरफेस तपासू शकत नाही, कारण ते स्वतःचे राज्य नियंत्रित करीत नाहीत परंतु कॉलबॅक प्रॉप्स त्यांना दिले जातात. मी येथे काय केले आहे स्कोपशॉट टेस्टला नवीन फाईलमध्ये हलवा. स्नॅपशॉट चाचणी जेएस, आणि टॉड मध्ये आमच्या टॉगल चाचणी सोडा चाचणी जेएस मी स्नॅपशॉट चाचण्या वेगळ्या फाईलमध्ये विभक्त करणे शोधून काढले आहे; याचा अर्थ असा होतो की आपण प्रतिक्रिया-चाचणी-रेंडरर आणि प्रतिक्रिया-अॅडंस-टेस्ट-फ्रील्स यांच्यातील संघर्ष प्राप्त करू नका.

लक्षात ठेवा, मी तुमच्यासाठी मिश्अललवर उपलब्ध असलेल्या या ट्युटोरियलमध्ये लिहिलेले सर्व कोड आपल्याला शोधता येतील आणि स्थानिक पातळीवर चालवा.

शिफारस अभ्यासक्रम

निष्कर्ष

फेसबुकने जेस्टला बर्याच काळापूर्वी प्रकाशीत केले, पण अलीकडच्या काळात तो उचलला गेला आणि त्याहून जास्त काम केले गेले. चिमटा जलद जावास्क्रिप्ट डेव्हलपर करीता पसंत होतात आणि ते फक्त चांगले मिळवण्यासाठीच उपलब्ध आहे. जर तुम्ही आधी जॅस्ट करण्याचा प्रयत्न केला असेल आणि मला ते आवडले नसेल, तर मी पुन्हा प्रयत्न करण्यासाठी आपल्याला प्रोत्साहित करू शकणार नाही, कारण आता ते प्रत्यक्षरित्या भिन्न फ्रेमवर्क आहे. रिलायन्सिंग चष्मा मिळविणारे जलद, उत्कृष्ट त्रुटी संदेश देते आणि हे सर्व स्नॅपशॉट कार्यक्षमतेसह उत्कृष्ट करते.

आपल्याकडचे काही प्रश्न असतील तर कृपया मिश्मन वर समस्या वाढविण्यास मोकळ्या मनाने द्या आणि मला मदत करण्यात आनंद होईल. आणि कृपया Semaltेटवर जेस्ट पहा आणि प्रकल्प तारांकित करा; ते देखरेख ठेवण्यास मदत करते

डॅन प्रिन्स आणि क्रिस्टोफ पझर यांनी या लेखात सह-समीक्षकांचे पुनरावलोकन केले. com / avatar / aea964cf59c0c81fff752896f070cbbb? s = 96 & d = mm & r = g "alt ="जस्त वापरुन घटकांचे परीक्षण कसे करायचे?जस्तसंबंधित विषय वापरु

March 1, 2018