2016-02-18 26 views
13

के रूप में अवांछित फ़ंक्शंस (fdescribe, description.only) का पता लगाएं नोड में विशेष रूप से गुलप में कोड बेस में अवांछित कार्यों का उपयोग कैसे किया जा सकता है?गुलप कार्य

मैं अनजाने खराब चश्मा के लिए जाँच के बाद हूँ, यानी ddescribe/fdescribe और जैस्मीन के लिए iit/fit या .only और .skip मोचा के लिए:

// should be reported 
fdescribe(function() { 
    // should not be reported 
    it(function() { 
    var fit = ...; 
    this.fit = ...; 
    }); 

    // should not be reported 
    // fit(function() { ... }); 

    // should be reported 
    xit(function() { ... }); 

    // should be reported 
    fit(function() { ... }); 
}); 

// should be reported 
describe.only(function() { 
    // should not be reported 
    it(function() { ... }); 

    // should not be reported 
    // it.only(function() { ... }); 

    // should be reported 
    it.skip(function() { ... }); 

    // should be reported 
    it.only(function() { ... }); 
}); 

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

टिप्पणी की गई लोगों को निश्चित रूप से पता नहीं होना चाहिए, साथ ही साथ एक ही नाम के साथ कार्य/गुण (संभवतः fit), इसलिए सरल रेगेक्सपी मैच यहां एक विकल्प नहीं है (जैसे यह console.* के लिए होगा)। कुछ एएसटी-आधारित समाधान जो उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन नाम स्वीकार करते हैं, उनकी सराहना की जाएगी।

उत्तर

7

मैं इसे ESLint जावास्क्रिप्ट लिनिंग उपयोगिता के माध्यम से एक स्थिर विश्लेषण चरण पर हल कर दूंगा। विशेष/ध्यान केंद्रित मोचा चश्मा गलती से codebase में छोड़ दिया पकड़ने के लिए, वहाँ एक no-exclusive-tests rule में लागू है eslint-plugin-mocha plugin:

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

यह नियम आपको .only को अपने परीक्षणों से चेतावनी को हटाकर याद दिलाता है जब भी आप विशिष्टता सुविधा का उपयोग कर रहे हों।

आप gulp को eslint रन टाई करना चाहते हैं - gulp-eslint प्लगइन का उपयोग।


यह भी करने से पहले एक Git हुक में प्रतिबद्ध gulpeslint कार्य को चलाने के लिए एक अच्छा विचार हो सकता है। हमने गिट हुक को स्थापित करने और ट्रैक रखने के लिए pre-git पैकेज का उपयोग किया है।

इस तरह केंद्रित या अनन्य परीक्षण कोडबेज में पहले स्थान पर नहीं पहुंचेंगे।

+0

मैंने उस उद्देश्य के लिए लिंटर्स के बारे में नहीं सोचा था। मैं उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन नामों के लिए एएसटी-आधारित समाधान रखना चाहता हूं, लेकिन केवल टेस्ट फ्रेमवर्क ग्लोबल्स एस्लिंट-प्लगइन-मोचा के लिए मुझे जो चाहिए वह हो सकता है। अफसोस की बात है, ऐसा लगता है कि यह '.skip' का समर्थन नहीं करता है। – estus

+0

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

+0

@estus मुझे लगता है कि यह 'एस्लिंट-प्लगइन-मोचा' नियम छोड़ने के बारे में चेतावनी देगा: https: // github।com/lo1tuma/eslint-प्लगइन-मोचा/ब्लॉब/मास्टर/docs/नियमों/no-global-tests.md। – alecxe

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