आप देखे जाने वाले बाहरी व्यवहार का परीक्षण कर सकते हैं। इस साधारण मामले में आपने केवल आंतरिक कार्य के मूल्य को वापस कर दिया, लेकिन वास्तविक दुनिया के उदाहरण में आप उस आंतरिक कार्य के परिणाम को किसी और चीज़ के साथ जोड़ सकते हैं। वह संयोजन वह है जो आप परीक्षण करेंगे, न कि निजी विधि के प्रत्यक्ष आउटपुट।
निजी विधि का परीक्षण करने का प्रयास करने से आपके कोड को बदलने और प्रतिक्रिया करने में कठिनाई होगी, भले ही बाहरी व्यवहार संरक्षित हो। उस ने कहा, मैं यूनिट परीक्षणों को अपने कोड के व्यापक परीक्षण के रूप में देखना पसंद नहीं करता, बल्कि केवल एपीआई का एक उदाहरण प्रदान करता हूं और यह विभिन्न स्थितियों से कैसे व्यवहार करता है। अब
var val = function() {
var myInnerfunction = function(input) {
return input + ' I ADDED THIS';
};
/* START test hook */
arguments.callee.__test_inner = myInnerFunction;
/* END test hook */
return myInnerfunction('test value');
}();
, एक बार वैल में कम से कम एक बार चलाया जा रहा है, तो आप संदर्भित कर सकते हैं val.__test_inner
और परीक्षण योग्य जानकारी के साथ यह फोन:;)
स्रोत
2009-12-10 13:54:41
उत्तर अब एक व्यापक प्रश्न उठा रहे हैं। यह एक मामूली उदाहरण था। मेरे पास जेएस फ़ंक्शंस हैं जो अपेक्षाकृत डीओएम संरचना के साथ निकटता से बंधे हैं, जिन्हें वे इसके साथ जोड़ते हैं, और इसे सामान्य सार्वजनिक उपयोगिता API में नहीं खींचा जा सकता है। मुझे इन कार्यों का परीक्षण करने की ज़रूरत है; उनका तर्क महत्वपूर्ण है, लेकिन वे सभी को एक समारोह शाब्दिक के भीतर-डीओएम-तैयार घोषित किया गया है, और घटना संचालक के रूप में डीओएम तत्वों के रूप में संलग्न किया गया है। वे अनिवार्य रूप से निजी हैं, और डीओएम संरचना के साथ निकटता से जुड़े हुए हैं, लेकिन मुझे अभी भी उनका परीक्षण करने की आवश्यकता है। मेरे परीक्षणों से मुझे उनके पास पहुंचने के लिए वे कहां रहना चाहिए? –
विधियों को लेने के लिए मैं लाइब्रेरी द्वारा-dom-ready पर निष्पादित अज्ञात फ़ंक्शन से परीक्षण करना चाहता हूं, मैंने उन्हें "पैकेज" के भीतर नामित किया जो मेरे पृष्ठ पर चल रही कार्यक्षमता के अनुरूप है। यद्यपि यह कोड वास्तव में केवल इस विशेष पृष्ठ पर उपयोग किया जाएगा, और केवल ईवेंट हैंडलर के माध्यम से मैंने इस विशिष्ट डोम में जोड़ा है, कम से कम मैं अब इस तर्क का परीक्षण कर सकता हूं। मुझे निर्देशित करने के लिए आप सभी को धन्यवाद। कोई और विचार स्वागत है। –