2010-07-16 13 views
17

में दावे डालने के लिए कैसे मैं दावे का उपयोग करना चाहता हूं और अपने रूबी कोड में वैल्यूएडिएशन डालना चाहता हूं (उदाहरण: एक ज़िप फ़ाइल बनाई गई है, लेबल मौजूद है, टेक्स्ट क्षेत्र में संदेश है, आदि)। मैंने assert @selenium.is_text_present(textMessage) जैसे कुछ जोरदार वक्तव्य दिए हैं, लेकिन वे काम नहीं करते हैं।रूबी कोड

अगर मुझे दावा के लिए कोई रूबी मणि स्थापित किया जाए तो कृपया मुझे बताएं।

+2

कृपया सुनिश्चित करें कि आप [स्वरूपण गाइड] पढ़ा है बनाने (http://stackoverflow.com/editing-help), नोटिस हम सब हमेशा से रहे हैं कि दोस्ताना, और यही कारण है कि हम संदेशों के सामान्य "हाय/धन्यवाद" भागों को छोड़ देते हैं, और - StackOverflow में आपका स्वागत है! –

+0

सोचें कि यह समान है - http://stackoverflow.com/questions/147969/is-it-idiomatic-ruby-to-add-an-assert-method-to-rubys- कर्नेल- क्लास – carrutherji

उत्तर

24

सरल के लिए दावा है, तो आप शायद अपने स्वयं के ज़ोर विधि रोलिंग एक ब्लॉक लेने बंद सबसे अच्छा कर रहे हैं:

ruby-1.9.1-p378 > class AssertionError < RuntimeError 
ruby-1.9.1-p378 ?> end 
=> nil 
ruby-1.9.1-p378 > def assert &block 
ruby-1.9.1-p378 ?> raise AssertionError unless yield 
ruby-1.9.1-p378 ?> end 
=> nil 
ruby-1.9.1-p378 > assert { 1 > 0 } 
=> nil 
ruby-1.9.1-p378 > assert { 5 == 12 } 
AssertionError: AssertionError 
    from (irb):8:in `assert' 
    from (irb):11 
    from /Users/mr/.rvm/rubies/ruby-1.9.1-p378/bin/irb:17:in `<main>' 

copypastastable रूप में:

class AssertionError < RuntimeError 
end 

def assert &block 
    raise AssertionError unless yield 
end 

i = 1 
assert {i >= 0} 
assert { 5 == 12 } 
+2

क्या इसका उपयोग करने का कोई कारण है एक साधारण बुलियन के बजाय एक तर्क के रूप में एक ब्लॉक? –

+0

यदि जोरदार विधि कुछ अन्य शर्त (उदाहरण के लिए 'अगर DEBUG_ENABLED') की जांच करता है, तो "उठाएं ... जब तक उपज न हो", तो अगर वह स्थिति झूठी आती है, तो उपज कभी भी लागू नहीं की जाएगी, और इसलिए पास-इन ब्लॉक का मूल्यांकन कभी नहीं किया जाएगा। यदि ब्लॉक क्या महंगा है, तो इसका प्रोग्राम निष्पादन समय पर बड़ा प्रभाव हो सकता है। –