Node.js के साथ उपयोग करने के लिए सबसे अच्छा परीक्षण ढांचा क्या है? [बन्द है]


130

मैंने https://github.com/ry/node/wiki/modules#testing पर परीक्षण रूपरेखाओं की लंबी सूची को देखा है । इन चौखटे के साथ क्या अनुभव है?

जाहिर है कि ब्राउज़र में चलने की क्षमता एक बड़ा बोनस होगा, लेकिन मुझे मुख्य रूप से Node.js. में दिलचस्पी है। एक भारी अतुल्यकालिक तिरछा के साथ कुछ बहुत अच्छा होगा।

जवाबों:


70

अपडेट करें:

मेरी राय में मोचा सबसे अच्छा है।


इन चौखटे के साथ क्या अनुभव है?

मैंने एक्सप्रेसो के साथ खेला जो बहुत अच्छा टेस्टिंग फ्रेमवर्क है जिसमें टेस्ट-कवरेज भी है। इसे TJ Holowaychuk द्वारा बनाया गया है जो Express.js (insanely fast (और small) सर्वर-साइड जावास्क्रिप्ट वेब डेवलपमेंट फ्रेमवर्क Node.js और कनेक्ट पर बनाया गया है। मैंने हाल ही में देखा कि उसके पास एक शांत पुस्तकालय भी है, जिसे should.js कहा जाता है, जिसे एक्सप्रेसो के साथ मिलकर और भी बेहतर परीक्षण अनुभव के लिए इस्तेमाल किया जा सकता है।

जाहिर है, ब्राउज़र में चलने की क्षमता एक बड़ा बोनस होगा

मुझे विश्वास नहीं है कि यह ब्राउज़र में चल सकता है, लेकिन मुझे यह भी नहीं पता कि आप इसे ब्राउज़र के अंदर क्यों चलाना चाहते हैं?

लेकिन मुझे मुख्य रूप से Node.js. में दिलचस्पी है एक भारी अतुल्यकालिक तिरछा के साथ कुछ बहुत अच्छा होगा।

एक्सप्रेस से बोली:

प्रत्येक कॉलबैक के लिए दिया गया तर्क पहले है, जो आमतौर पर कॉलबैक को लागू करने का दावा करने के लिए उपयोग किया जाता है।

अतुल्यकालिक कार्यों का परीक्षण करने के लिए आप पहले प्रयोग कर सकते हैं।


TIP: GitHub पर TJ Holowaychuk का अनुसरण करें , क्योंकि वह बहुत अच्छा ओपन-सोर्स कोड बनाता है।


उत्तर के लिए धन्यवाद, मैंने एक्सप्रेस-आउट की कोशिश की, लेकिन पाया कि async समर्थन बहुत सहज नहीं था। (मेरे लिए वैसे भी)
doffm 22

3
मैं वर्तमान में प्रतिज्ञा ( vowsjs.org ) की कोशिश कर रहा हूं, जिसे समझना मेरे लिए आसान था।
डॉफ्म

vowjs भी एक अच्छा परीक्षण ढांचे की तरह लग रहे थे। मुझे एक्सप्रेसो की टेस्ट कवरेज सुविधा पसंद है। प्लस आई ए वंडरिंग जो आपको समझ में नहीं आया?
अल्फ्रेड

4
आप कहते हैं कि आप अब मोचा पसंद करते हैं, लेकिन क्यों?
जोनाथन अर्केल

कर के देखो। मोचा के पास सब कुछ है :)। यहां तक ​​कि ब्राउज़र समर्थन, कोड कवरेज। आप इसे नाम देते हैं, मोचा है!
अल्फ्रेड

40

मैं VowsJS का उपयोग करता हूं जो async BDD फ्रेमवर्क (व्यवहार प्रेरित विकास) का उपयोग करना आसान है और काम पूरा करना है।

हाल ही में मैंने अपने एनपीएम मॉड्यूल का परीक्षण करने के लिए बहुत से लोगों को चुना है, इसलिए मेरा मानना ​​है कि अब तक इसका उपयोग करना सबसे अच्छा है।

कुछ लोकप्रिय परीक्षण रूपरेखा जिनका उपयोग NodeJS के साथ किया जा सकता है, वे भी हैं:

आप यहां जावास्क्रिप्ट परीक्षण ढांचे की एक सूची भी देख सकते हैं

कुछ और लिबास जो आपको बेहतर कोड लिखने में मदद कर सकते हैं वे हैं:

  • ReadyJS के साथ अपने js फ़ाइलों और उन्हें परीक्षण देखता JSHint
  • ठोस छोटे निरंतर एकीकरण सर्वर
  • जैस्मीन के लिए ईज़ेबेल निरंतर परीक्षण
  • नोसी काफी नहीं है, लेकिन एक अच्छा रोडमैप है, इसलिए मैं इस पर नजर रखता हूं

एटलसियन द्वारा बांस सीआई सर्वर भी है जो इसे बनाता है और परीक्षण स्वचालित करता है। यह Apache / Tomcat के लिए एक पैकेज है (जो sux है क्योंकि यह जावा का उपयोग करता है और जो इसे बहुत भारी बनाता है) भी मुफ्त नहीं है लेकिन इसके पास एक स्टार्टर लाइसेंस है जिसकी कीमत $ 10 है इसलिए मेरा मानना ​​है कि यह सस्ती है। यह मेरे द्वारा अब तक पाए गए सभी CI सर्वरों में से सबसे अधिक चित्रित है और यह सभी यूनिट परीक्षणों का समर्थन करता है जो xUnit का समर्थन करते हैं इसका मतलब है कि आप किसी भी भाषा के लिए बांस के साथ बिल्ड / परीक्षण चला सकते हैं।

NodeJS के साथ CI के लिए एक अन्य विकल्प ट्रैविस है जो बहुत से लोग अपने ओपन सोर्स प्रोजेक्ट्स के लिए उपयोग करते हैं, क्योंकि यह कहता है कि ओपन सोर्स समुदाय के लिए एक होस्ट निरंतर एकीकरण सेवा।

नोड जेएस प्रोजेक्ट्स विषय के लिए निरंतर एकीकरण के साथ एक Google समूह चर्चा भी है ।


6
प्रतिज्ञा लेने की सोच रहे लोगों के लिए एक नोट: यह 2012 से अपडेट नहीं किया गया है
कोड कमांडर

उन्होंने कुछ बदलाव किए । अंतिम रिलीज़: सितम्बर, 2015
आंद्रे फिग्यूएरेडो

2020 में प्रतिज्ञा स्थल पर खराब प्रवेश द्वार मिला, शायद मृत हो?
लिंकन

वाह, दोस्त, यह तब से बहुत साल हो गया है, सभी मुझे VowJS के बारे में मिल सकता है अब यह है: istavros.github.io/vowjs, लेकिन दुर्भाग्य से, मैं सुझाव नहीं दे सकता कि आप इसे 2020 तक उपयोग कर सकते हैं। यह पुराना है, और मैं दृढ़ता से सुझाव है कि आप इसके बजाय मोचा ( mochajs.org ), जैस्मीन ( jasmine.github.io ) और जेस्ट ( jestjs.io ) की जांच करें
पनसुआर

14

उपरोक्त प्रश्नकर्ता की टिप्पणियों के आधार पर, मैंने प्रतिज्ञा लेने की कोशिश की , और इसने बहुत सारी समस्याओं को हल किया जो मुझे अपने async परीक्षण के साथ हो रही थीं। सीरियल और समानांतर परीक्षण को मिलाने की इसकी क्षमता कमाल की है।

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

अद्यतन: मैं भी बाहर की जाँच करने के लिए लोगों को प्रोत्साहित करेगा चाहिए उनके दावा है के लिए। यह बहुत ही लचीली, बहुत पठनीय अभिकर्मकों के लिए अनुमति देता है, और एक्सप्रेसो और प्रतिज्ञा दोनों के साथ संगत है, और शायद सबसे अन्य परीक्षण रूपरेखा भी।

(मैं इसे एक अलग उत्तर के रूप में पोस्ट कर रहा हूं, जब लोग अल्फ्रेड के जवाब पर टिप्पणी नहीं करते हैं।)

अद्यतन १/ ,/२०१५: इसकी कीमत क्या है, इसके लिए मैंने व्रतों से लेकर मोचा तक, और चाहिए से लेकर चाय तक। मोचा के पास वादों का उपयोग करते हुए अतुल्यकालिक परीक्षणों के लिए अब बेहतर समर्थन है, और चाई कई लचीले मुखर विकल्पों के लिए, expectएपीआई सहित , उन लोगों के लिए अनुमति देता है, जो ऑब्जेक्ट प्रोटोटाइप को संशोधित करना पसंद नहीं करते हैं।


1
shouldप्रोटोटाइप के नाम shouldपर एक गैर-विलुप्त होने वाली संपत्ति को काटता है Object, जिसका अर्थ है कि वे सभी मूल्य / वस्तुएं जो आप परीक्षण के समय और उत्पादन के समय में थोड़ी भिन्न दिखती हैं । हालांकि यह ज्यादातर मामलों में 'सिर्फ काम करता है', यह सिद्धांत रूप में अंतर्निहित प्रोटोटाइप को संशोधित करने के लिए एक बुरा विचार है; केवल परीक्षण के दौरान ऐसा करना गलत लगता है। यह सब पूरी तरह से किया गया है ताकि उनके पास एक अच्छा वाक्यविन्यास हो सके।
प्रवाह करें

v2 के बाद से यह बहाना आसान है ( shouldबिना Object.prototypeकॉल require('should').noConflict()और उपयोग के। इसे एक वैकल्पिक विकल्प के रूप में इस्तेमाल किया जाना चाहिए।
den bardadym

6

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


2

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

   Scenario: provides the version of all services
      given service x is running
      and service y is running
      when I request the service versions
      then service x should be version 0.0.1
      and service y should be version 0.0.2

2

मैं nununit का उपयोग कर रहा हूं और async कार्यों के साथ काम करने की इसकी क्षमता यथोचित रूप से सीधी है।

एक अच्छा वॉकथ्रू है जो आपको अपने ब्लॉग पर नितुनीत के साथ तैयार हो जाना चाहिए ।

[ नोट: ब्लॉगपोस्ट के बाद से एपीआई बदल गया है - setUp(callback)और tearDown(callback)दोनों एक तर्क के रूप में कॉलबैक लेते हैं, जिसे आपको अपने सेटअप / फाड़ के पूरा होने पर कॉल करने की आवश्यकता होती है। ]


इसे देखते हुए और एक्सप्रेसो में mongoose.js फ़ंक्शन के कुछ परीक्षणों का प्रयास करने के बाद, सभी परीक्षणों को समानांतर और अनुमति देने वाले सेटअप और टियरडाउन परीक्षणों में नहीं चलाने के लिए नोडुनिट की प्राथमिकता उपयोगी लगती है।
asparagino
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.