2009-02-12 13 views
8

क्या यूनिट परीक्षण ActiveRecord सत्यापन के लिए आवश्यक है या वे पहले से ही अच्छी तरह से परीक्षण किए गए हैं और इसलिए पर्याप्त विश्वसनीय हैं?क्या यूनिट परीक्षण ActiveRecord सत्यापन के लिए आवश्यक है?

उत्तर

14

मान्यताओं प्रति से भरोसेमंद होना चाहिए, लेकिन आप यह जांचना चाहेंगे कि सत्यापन मौजूद है या नहीं।

दूसरे शब्दों में रखो, कुछ परीक्षण करने का एक अच्छा तरीका यह है कि यह एक काला बॉक्स था, कार्यान्वयन से परीक्षणों को सारणित करना, उदाहरण के लिए आपके पास एक परीक्षण हो सकता है जो जांचता है कि एक व्यक्ति मॉडल सहेजा नहीं जा सकता बिना किसी नाम के, लेकिन इस बात पर परवाह नहीं है कि व्यक्ति वर्ग उस सत्यापन को कैसे करता है।

4

यह स्वीकार करने के लिए पर्याप्त होना चाहिए कि ActiveRecord जैसे पुस्तकालय डेवलपर्स द्वारा आपके द्वारा कभी भी आपके द्वारा किए जाने वाले बेहतर परीक्षण किए जाते हैं: उनके लिए यह एक प्राथमिक चिंता है, क्योंकि यह आपके लिए सबसे अच्छा स्पर्श है।

यह कहना नहीं है कि वहां बग नहीं होंगे - मुझे एक बार बहुत समय पहले एक छोटा एमएस एसक्यूएल सर्वर एडाप्टर मिला था - लेकिन जिस तरह की परीक्षा आप लागू करने की संभावना है, उन्हें बेनकाब करने की संभावना बहुत कम है वे किनारे के मामलों की संभावना है। यदि आप करते हैं बग ढूंढें, ज़ाहिर है, यदि आप इसे किसी टेस्ट केस के साथ रिपोर्ट करते हैं तो यह शायद बहुत उपयोगी है!

यदि मैं लाइब्रेरी लागू करता है तो बेहतर एक बेहतर पहलू को समझने की कोशिश कर रहा था, तो मैं केवल ActiveRecord internals का परीक्षण करूंगा। मैं किसी भी एप्लिकेशन प्रोजेक्ट में उन खोजी परीक्षणों को शामिल नहीं करूंगा, क्योंकि वे परियोजना के लिए वास्तव में प्रासंगिक नहीं हैं।

सामान्य रूप से, आपको कोड के लिए परीक्षण लिखना चाहिए जो आप स्वयं लिखते हैं: यदि आप रहते हैं या टीडीडी दुनिया में रहने का प्रयास करते हैं, तो परीक्षण पहले लिखा जाना चाहिए। यदि आपके मॉडल में सत्यापन नियम हैं तो नियमों को सुनिश्चित करने के लिए आपको निश्चित रूप से परीक्षण लिखना चाहिए। ज्यादातर मामलों में, परीक्षण छोटे होंगे, लेकिन भविष्य में कुछ समय अनजाने में हटाए जाने पर वे वास्तव में उपयोगी होंगे ...

3

जैसा कि माइक ने लिखा था, कम से कम आपको यह जांचना चाहिए कि सत्यापन मौजूद है । यह केवल डबल-एंट्री एकाउंटिंग (सैनिटी चेक) का थोड़ा सा है जो करना काफी आसान है।

स्थिति के आधार पर, आपको यह भी जांचना चाहिए कि आपका मॉडल विशिष्ट परिस्थितियों में मान्य या अमान्य है। उदाहरण के लिए यदि आपके क्षेत्र को एक निश्चित प्रारूप की आवश्यकता है, तो उदाहरण प्रारूपों का परीक्षण करें जो वैध हैं और जो नहीं हैं। यह देखने के लिए अपने परीक्षण में कुछ उदाहरण पढ़कर इसका क्या मतलब है बहुत आसान है:

class Person < ActiveRecord::Base 
    validates_format_of :email, 
     :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i 
end 

हाँ, सत्यापन काफी अच्छी तरह से परीक्षण किया और विश्वसनीय कर रहे हैं। लेकिन सत्यापन का आपका सही उपयोग वह है जिसे आप सत्यापित करना चाहते हैं।

0

एक साइड नोट के रूप में, रयान बिग के ब्लॉग पोस्ट has_and_belongs_to_many double insert में किसी व्यक्ति को ActiveRecord में एक बग का सामना करना पड़ता है (हालांकि सत्यापन से संबंधित नहीं है)। जैसा कि वह बताते हैं, मान लीजिए कि रेलों में संभवतः एक बग नहीं हो सकता है, क्योंकि हम जानते हैं कि रेल के लिए 900 खुले टिकट हैं।

लेकिन हां, मुख्य कारण यह है कि आप एक परीक्षा लिखना चाहते हैं यह जांचना है कि ActiveRecord का आपका उपयोग सही है।

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