2011-08-17 13 views
11

में लपेटा गया है जैसा कि मैं कई बार देखता हूं, एक संपूर्ण निष्पादन अज्ञात फ़ंक्शन का उपयोग पूरे पुस्तकालयों को रखने के लिए किया जाता है। इन पुस्तकालयों का परीक्षण कैसे किया जा सकता है, यदि उदा। अज्ञात फ़ंक्शन रैपर के अंदर QUnit कुछ भी नहीं पहुंच सकता है?यदि जावास्क्रिप्ट "यूनिट टेस्टेबल" हो सकता है तो स्व-निष्पादन अज्ञात फ़ंक्शन

+0

आप कोड (और इसका परीक्षण) पर काम कर सकते हैं और इसे "बिल्ड" स्क्रिप्ट का उपयोग रैपर में लपेटने के लिए कर सकते हैं। आईई 'फ़ंक्शन (विंडो, दस्तावेज़, अपरिभाषित) {...} (विंडो, दस्तावेज़)' जहां '... आपका कोड है। बस कोड को जोड़ना पर्याप्त होगा। –

उत्तर

2

आप सिर्फ इतना है कि "सार्वजनिक" समारोह पर अपने सभी परीक्षण करते हैं, उदाहरण के आधिकारिक jQuery कोर के लिए देख test suite

टुकड़ा:

// Basic constructor's behavior 

equals(jQuery().length, 0, "jQuery() === jQuery([])"); 
equals(jQuery(undefined).length, 0, "jQuery(undefined) === jQuery([])"); 
equals(jQuery(null).length, 0, "jQuery(null) === jQuery([])"); 
equals(jQuery("").length, 0, "jQuery('') === jQuery([])"); 
equals(jQuery("#").length, 0, "jQuery('#') === jQuery([])"); 

आप निजी कार्यों का उपयोग करने की सार्वजनिक परीक्षण करने के लिए की जरूरत नहीं है व्यवहार

6

मैं मानता हूं कि आप Backdoor Manipulation को निजी तरीकों से अलग तरीके से परीक्षण करने के लिए चुपके तरीके खोजने के लिए नहीं करना चाहते हैं।

हालांकि, जैसा कि आपने बताया है, वेब अनुप्रयोगों के लीग पर लीग एक मिट्टी की एक विशाल आत्म-निष्पादन गेंद के रूप में लिखी गई थी जिसमें किसी भी नामकरण या सार्वजनिक एपीआई की कमी थी। यह एक पूरी तरह से अलग समस्या है कि कई अन्य तकनीकी ढेर में सामना करने की संभावना नहीं है। अपने वेब एप्लिकेशन + अपनी इकाई परीक्षण:

वेब के लिए TDD'ing जावास्क्रिप्ट की भारी मूल्यों में से एक यह है कि आप जावास्क्रिप्ट कि कम से कम दो पक्षों द्वारा प्रयोग करने योग्य है लिखने के लिए मजबूर करता है।

मैं जैस्मीन के साथ इस विरासत बचाव खेल कई बार खेला है:

  1. हैं अनाम,

  2. Characterize साथ उन तरीकों एक स्वयं को क्रियान्वित करने, नामित विधि में कार्यक्षमता के प्रत्येक टुकड़ा लपेट कार्यात्मक Jasmine चश्मा। मुझे जैस्मीन से कई कारणों से प्यार है, लेकिन यह वास्तव में किंवदंती बचाव पर कुनीट हरा है क्योंकि इसकी उदाहरण समूह समूहों को घोंसला करने की क्षमता है। उदाहरण के लिए, जब भी कोड मैं निरूपित कर रहा हूँ एक गुमनाम समारोह है, यह आमतौर पर संभव एक नेस्टेड उदाहरण समूह उपयोग करने के लिए कड़ाई से एक जासूस के साथ यह nabbing और विभिन्न संदर्भों के तहत यह लागू द्वारा कि नेस्टेड समारोह के व्यवहार चिह्नित करने के लिए है।

  3. एक बार जब आप हरे रंग की हो, छोटे, अच्छी तरह से नामित, सुव्यवस्थित तरीकों/नामस्थान में

  4. लिखें पृथक परीक्षण पुनर्रचना उन इकाइयों

  5. एक सैंडविच खाने को चिह्नित और क्या उन पर विचार करने के लिए शुरू कार्यात्मक परीक्षण अभी भी मूल्यवान हैं (अगर आप किसी भी पूर्ण ढेर परीक्षण वे शायद कर रहे हैं की जरूरत नहीं है, आप पहले से ही अच्छा पूर्ण ढेर परीक्षण अगर यह शायद उन्हें बनाए रखने के वारंट भी बेमानी है)। क्योंकि मैं आमतौर पर Cucumber/Capybara साथ विकास ड्राइव, मैं ज्यादा मूल्य जैस्मीन के साथ एकीकृत परीक्षण लिखित रूप में नहीं दिख रहा है।

+0

+1 सैंडविच के लिए –

+0

लिंक @rene फिक्स्ड –