मान लें कि मेरे पास एक विधि है जो कुछ तर्क लेती है और उन्हें आवृत्ति चर के रूप में स्टोर करती है। यदि उनमें से एक शून्य है, तो बाद में कुछ कोड क्रैश होने जा रहा है। क्या आप अपवाद फेंकने के तरीके को संशोधित करेंगे यदि शून्य तर्क प्रदान किए जाते हैं और यह जांचने के लिए इकाई परीक्षण जोड़ते हैं? यदि मैं करता हूं, तो यह थोड़ा अधिक जटिल है क्योंकि जावास्क्रिप्ट में कई खराब मान हैं (शून्य, अपरिभाषित, NaN, आदि) और चूंकि इसमें गतिशील टाइपिंग है, मैं यह भी जांच नहीं सकता कि सही प्रकार की वस्तु पारित की गई है या नहीं।यूनिट परीक्षण करते समय खराब पैरामीटर की जांच करना कितना महत्वपूर्ण है?
उत्तर
मुझे लगता है कि यह वास्तव में इस बात पर निर्भर करता है कि आप किस प्रकार के एपीआई इकाई परीक्षण कर रहे हैं। यदि यह केवल एक आंतरिक घटक के लिए डिज़ाइन और बनाया गया घटक है, और आप जानते हैं कि उपयोग कुछ बाधाओं के तहत होगा, तो यह खराब पैरामीटर के लिए यूनिट परीक्षण के लिए अधिक हो सकता है। दूसरी तरफ, यदि आप बाहरी रूप से वितरण के लिए कुछ के बारे में बात कर रहे हैं, या जो कि विभिन्न स्थितियों में उपयोग किया जाता है, जिनमें से कुछ भविष्यवाणी करना मुश्किल है, हां, खराब मानकों की जांच करना उचित है। यह सब उपयोग पर निर्भर करता है।
मुझे लगता है कि आपके पास वास्तव में 2 अलग-अलग प्रश्न हैं।
पहला पैरामीटर इनपुट सत्यापन के लिए सबसे अच्छा अभ्यास है और दूसरा इन स्थितियों के लिए आपके यूनिट टेस्ट हैंडल परीक्षण होना चाहिए।
मैं अनुशंसा करता हूं कि आप या तो पैरामीटर के लिए एक तर्क अपवाद फेंक दें जो आपके फ़ंक्शन या किसी अन्य चर/संदेश को सही ढंग से प्रदान नहीं किया गया था जो स्थिति के कॉलिंग फ़ंक्शन/उपयोगकर्ता को सूचित करता है। आम तौर पर, आप अपवाद फेंकना नहीं चाहते हैं और जब आप जानते हैं कि वे असफल हो जाएंगे तो कार्यों को भी बुलाए जाने से रोकने की कोशिश करनी चाहिए।
अपने यूनिट परीक्षण के लिए, आपको निश्चित रूप से एक पूर्ण परिणाम होने के लिए नल मूल्य परीक्षण शामिल करना चाहिए।
जावास्क्रिप्ट instanceof और typeof है कि आप की जाँच वस्तुओं की किस तरह अपने कार्यों के लिए पारित किया जा रहा है मदद कर सकते हैं:
'undefined' == typeof noVariable; // true
var noVariable = null;
'undefined' == typeof noVariable; // false
typeof noVariable; // 'object'
noVariable === null; // true
var myArray = [];
typeof myArray; // 'object'
myArray instanceof Object; // true
myArray instanceof Array; // true
var myObject = {};
typeof myObject; // 'object'
myObject instanceof Object; // true
myObject instanceof Array; // false
आप इन के लिए कुछ डिफ़ॉल्ट "बुरा" मूल्यों को निर्धारित करने के लिए उपयोग कर सकते हैं अपने उदाहरण चर:
function myFunction(foo,bar) {
foo = foo instanceof Array ? foo : []; // If 'foo' is not an array, make it an empty one
bar = bar instanceof Number ? bar : 0;
// This loop should always exit without error, although it may never do a single iteration
for (var i=0; i<foo.length; i++) {
console.log(foo[i]);
}
// Should never fail
bar++;
}
या ऑपरेटर भी बहुत उपयोगी है:
function myFunction(blat) {
var blat = blat||null; // If 'blat' is 0, '', undefined, NaN, or null, force it to be null
// You can be sure that 'blat' will be at least *some* kind of object inside this block
if (null!==blat) {
}
}
foo एक सरणी होने पर सत्य बराबर होगा? –
हूप्सि। हां, 'foo/bar' उदाहरण borked है। उत्तर के लिए इसे देखने वाले लोगों के लिए, ** या ** '|| 'ऑपरेटरों को एक टर्नरी अभिव्यक्ति के साथ प्रतिस्थापित करें:' (foo exampleof Array)? foo: [] '। – shuckster
इसके अलावा, यह न भूलें कि जावास्क्रिप्ट के साथ आप अपेक्षित संख्याओं की तुलना में कम या उससे अधिक में गुजर सकते हैं। यदि आप चाहें तो आप उसे भी देख सकते हैं।
मजबूत और सुरक्षित कोड बनाने के लिए, किनारे के मामलों की जांच करना निश्चित रूप से महत्वपूर्ण कार्य है। सकारात्मक और नकारात्मक परीक्षण गुणवत्ता के लिए हमेशा अच्छा होता है। नकारात्मक परीक्षणों की कमी आपको लंबे समय तक काट सकती है।
तो मैं कहूंगा कि यह बेहतर है इसे सुरक्षित खेलें - दोनों करें। यह थोड़ा और काम है, लेकिन यदि आप समय बर्दाश्त कर सकते हैं, तो यह इसके लायक होगा। डेवलपर टोपी लेना और क्रैकर टोपी डालना कभी-कभी बहुत दिलचस्प हो सकता है।
- 1. यूनिट परीक्षण कितना अतिरिक्त समय लेता है?
- 2. एफ #, मान्य तर्कों की जांच करते समय कितना उचित है?
- 3. अनुकूलन कितना महत्वपूर्ण है?
- 4. यूनिट परीक्षण करते समय "यूनिट" क्या होना चाहिए?
- 5. Ocaml - सूची में डुप्लिकेट की जांच करते समय पैरामीटर प्रकार
- 6. एसक्यूएल पोर्टेबिलिटी कितना महत्वपूर्ण है?
- 7. यूनिट परीक्षण - क्या यूनिट टेस्ट कॉल करने के लिए यह खराब फॉर्म है अन्य यूनिट परीक्षण
- 8. कितना परीक्षण पर्याप्त है?
- 9. पुराने ब्राउज़र का समर्थन करना कितना महत्वपूर्ण है?
- 10. क्या इकाई को एक निर्माता का परीक्षण करना महत्वपूर्ण है?
- 11. कितना शून्य जांच पर्याप्त है?
- 12. यूनिट-टेस्ट नाम महत्वपूर्ण हैं?
- 13. डिज़ाइन/निर्माण समय पर कस्टम विशेषता पैरामीटर की जांच
- 14. क्या यूनिट परीक्षण थ्रेड के साथ समय-अंतराल क्रियाएं है। नींद खराब है?
- 15. टाइपिंग करते समय पासवर्ड मिलान की जांच
- 16. वास्तव में फ़ॉन्ट का निपटान करना कितना महत्वपूर्ण है?
- 17. टीडीडी (यूनिट परीक्षण) का अभ्यास करते समय ओपनजीएल सीखना
- 18. यूनिट परीक्षण में वर्तमान समय में हेरफेर?
- 19. ऐप लॉन्च करते समय DataWithContentsOfURL खराब है?
- 20. बाजार प्रदर्शन कारक कितना महत्वपूर्ण है?
- 21. सॉफ्टवेयर के modularization परियोजनाओं कितना महत्वपूर्ण है
- 22. यूनिट परीक्षण कोड जो वर्तमान समय
- 23. यूनिट परीक्षण क्या है?
- 24. निर्भर सेवाओं को इंजेक्शन करते समय यूनिट परीक्षण AngularJS सेवाएं
- 25. यूनिट परीक्षण
- 26. यूनिट टेस्ट लिखते समय परीक्षण करने के लिए क्या करें?
- 27. नामस्थान द्वारा संदर्भित संदर्भ कितना महत्वपूर्ण है?
- 28. क्या लगातार दस्तावेज़ीकरण की जांच आपको खराब कोडर बनाती है?
- 29. लंबे समय से चलने वाले यूनिट परीक्षण
- 30. यूनिट परीक्षण
मैं इससे सहमत हूं। पैरामीटर परीक्षण कार्यों/विधियों * स्वयं * जहां भी एप्रोपिएट (यानी लगभग हर समय) में किया जाना चाहिए। – Noldorin