जवाबों:
expect { some_method }.to raise_error
RSpec 1 सिंटेक्स:
lambda { some_method }.should raise_error
अधिक के लिए प्रलेखन (RSpec 1 वाक्यविन्यास के लिए) और RSpec 2 प्रलेखन देखें ।
expect { some_method }.to raise_error
expect { some_method }.to raise_error(SomeError)
expect { some_method }.to raise_error("oops")
expect { some_method }.to raise_error(/oops/)
expect { some_method }.to raise_error(SomeError, "oops")
expect { some_method }.to raise_error(SomeError, /oops/)
expect { some_method }.to raise_error(...){|e| expect(e.data).to eq "oops" }
# Rspec also offers to_not:
expect { some_method }.to_not raise_error
...
नोट: raise_error
और raise_exception
विनिमेय हैं।
lambda { some_method }.should raise_error
lambda { some_method }.should raise_error(SomeError)
lambda { some_method }.should raise_error(SomeError, "oops")
lambda { some_method }.should raise_error(SomeError, /oops/)
lambda { some_method }.should raise_error(...){|e| e.data.should == "oops" }
# Rspec also offers should_not:
lambda { some_method }.should_not raise_error
...
नोट: के raise_error
लिए एक उपनाम है raise_exception
।
RSpec 2:
RSpec 1:
लैम्ब्डा के बजाय, उम्मीद का उपयोग करें:
expect { some_method }.to raise_error
यह rspec के हाल के संस्करणों के लिए लागू होता है, यानी rspec 2.0 और ऊपर।
अधिक के लिए डोको देखें ।
expect
बेहतर है या इससे भी बदतर है lambda
।
expect { visit welcome_path }.to raise_error
rspec-expections
मणि पर संस्करण 3.3 से एक पैरामीटर के बिना रिक्त उठने_रोर के लिए चेतावनी देता है
expect { raise StandardError }.to raise_error # results in warning
expect { raise StandardError }.to raise_error(StandardError) # fine
इससे आपको संकेत मिलता है कि आपका कोड जांच के इरादे से अलग त्रुटि के साथ विफल हो सकता है।
चेतावनी:
raise_error
एक विशिष्ट त्रुटि प्रदान करने के बिना मिलानकर्ता का उपयोग करना या संदेश गलत सकारात्मकता को जोखिम में डाल देता है, क्योंकिraise_error
जब मैच रूबी उठाएगाNoMethodError
,NameError
याArgumentError
संभावित रूप से उस अपेक्षा को पारित करने की अनुमति देगा जो उस पद्धति को निष्पादित करने के बिना भी जिसे आप कॉल करना चाहते हैं। इसके बजाय एक विशिष्ट त्रुटि वर्ग या संदेश प्रदान करने पर विचार करें। यह संदेश सेटिंग द्वारा दबाया जा सकता हैRSpec::Expectations.configuration.warn_about_potential_false_positives = false
:।