2012-06-16 23 views
8

लघु और उचित रूप में बेवकूफ सवाल है क्योंकि इतना आसान है और आप हर जगह का लगता है कि: किसी को कोड कवरेज के किसी भी प्रकार एक RequireJS सामने के अंत परियोजना (गैर NodeJS) के भीतर काम करने के लिए मिल गया है?जावा स्क्रिप्ट कोड कवरेज

जे एस दुनिया में TDD दृष्टिकोण और एएमडी विकास के टेक-ओवर के प्रसार के कारण एक बेवकूफ सवाल की तरह लगता है।

मैंने दस लाख दृष्टिकोण की कोशिश की है, सभी की कमी है।

1) कवरेज प्लगइन के साथ JSTD: मेरा परियोजना जैस्मीन यूनिट टेस्ट के साथ एक रीढ़ परियोजना है। जेएसटीडी को एएमडी मॉड्यूल को ठीक से लोड करने और मापने में परेशानी है। यदि मैं जेएसटीडी को एक जेएसडी फ़ाइल (आवश्यकताजेएस ऑप्टिमाइज़र द्वारा संयुक्त) पर चलाता हूं तो कोड कवरेज खूबसूरती से काम करता है, इसके अलावा कवरेज तब एकत्रित किया जाता है और संपूर्ण फ़ाइल पर मेट्रिक्स परिभाषित किया जाता है। बढ़िया, यह बेकार है क्योंकि इसमें तृतीय पक्ष पुस्तकालय शामिल हैं, और क्योंकि मैं परीक्षण की सहायता के लिए एक इकाई को लक्षित नहीं कर सकता। अरे।

2) जेएससीओवरेज - कुल असफल, एएमडी मॉड्यूल पसंद नहीं है।

3) क्रोम विशिष्ट & फायरबग विशिष्ट 'लाइव' उपकरण - असफल, एएमडी मॉड्यूल पसंद नहीं करते हैं।

मेरे द्वारा किए गए हर दृष्टिकोण को कस्टम काम की भारी मात्रा की आवश्यकता होती है। तो शायद मुझे स्क्रैच से एक कस्टम समाधान स्पिन करने की आवश्यकता है?

कैसे निम्नलिखित दृष्टिकोण के बारे में: साधन कोड को RequireJS अनुकूलक का विस्तार और कवरेज पैदा करते हैं। यह इन-मेमोरी इंस्ट्रूमेंटेशन होगा जिसे एक requ.config ({instrument: true}) ध्वज के साथ सक्षम किया जा सकता है। हर बार एक मॉड्यूल लोड करने की आवश्यकता होती है, यह स्वचालित रूप से इसे नियंत्रित करती है और इसे अपने मॉड्यूल भंडार में रखती है। जैस्मीन परीक्षण चलाने के बाद कहें, वैश्विक आवश्यकता वस्तु के नीचे किसी ऑब्जेक्ट में कवरेज आंकड़े एकत्र किए जाते हैं और कहीं से भी सुलभ होते हैं।

इनपुट?

+0

कोड कवरेज लागू करने के लिए गैर तुच्छ है। आपको बंकर जैसे कुछ के साथ एएसटी हैकर करना होगा। – Raynos

+0

सहमत हुए। यही कारण है कि मैंने मौजूदा एएसटी और वाद्ययंत्र पुस्तकालयों (एस्प्रिमा, नोड-कवर) का उपयोग करके शुरू किया है। मेरे पास अधिकांश आवश्यक जेएस कोड संशोधन किए गए हैं और मैं उपकरण और कवरेज संग्रह भाग पर काम कर रहा हूं। – Bernardo

उत्तर

6

Blanket.js काम करता है एक संशोधित RequJS लोडर। हम जैस्मीन समर्थन पर काम कर रहे हैं, और किसी भी प्रतिक्रिया या सुझाव स्वीकार करने में प्रसन्न होंगे।

यदि आपकी परियोजना उत्पादन में जा रही है, तो ब्लैकेट.जेएस आपके लिए नहीं है, लेकिन अगर यह सिर्फ एक साइड प्रोजेक्ट है तो यह आपकी आवश्यकताओं को पूरा करने के लायक हो सकता है।

संपादित करें: कंबल अब जैस्मीन का समर्थन करता है।

+0

जमैमिन के कंबल के समर्थन की आवश्यकता के साथ दस्तावेज कहां है? मैं इस पर कुनीट दस्तावेज़ देखता हूं लेकिन चमेली नहीं। – rball

3

अच्छी तरह से यह पता चला है कि Node-Coverage वास्तव में एक एएमडी अज्ञेय इंटरफ़ेस प्रदान करता है जो कि अपने स्वयं के सर्वर से कोड की सेवा करके कोडजेस और जैस्मीन के साथ ठीक काम करता है।

मैं अभी भी RequireJS कवरेज कार्यान्वयन मैंने शुरू किया पर काम कर रहे कुछ समय खर्च करेंगे, क्योंकि यह एक अलग सर्वर चल रहा है की आवश्यकता नहीं होगी।

2

एएमडी मॉड्यूल और जेएससीओवरेज के साथ वास्तव में आपकी समस्या क्या है? मेरे पास एक सेटअप (QUNit/PhantomJS/JSCoverage) है जो एएमडी मॉड्यूल के साथ चल रहा है।

शायद आप अपनी लाइब्रेरी पथ को अपनी require.config में सही तरीके से सेट करना भूल गए हैं?

के बाद मैं पुस्तकालय पथ में परिवर्तन instrumented कोड का उपयोग करना पड़ता "सामान्य" फ़ाइलों की, सब कुछ काम किया।

2

चेक बाहर परियोजना मैं हाल ही में आसान जावास्क्रिप्ट ब्राउज़र-अंतर्गत कवरेज रिपोर्ट के लिए जारी किया है, JSCovReporter https://github.com/TwoApart/JSCovReporter

2

mochawrapper

मैं सिर्फ एक नोड मॉड्यूल है कि कवरेज रिपोर्टिंग को स्वचालित लिखा था। यह मोचा, jscoverage और नोड के जोर पर आधारित है। आपको आवश्यकताएं संशोधित करने या बनाने या enviornment चर का उपयोग करने की आवश्यकता नहीं है।

यह GitHub पर होस्ट किया गया है: mochawrapper

jscoverage शायद, ब्राउज़र में नहीं चलता है तो आप को देखने के लिए चाहते हो सकता है: bunker जो Qunit उपयोग करने के साथ बदसूरत करना-js पर आधारित है

संबंधित मुद्दे