मिनीटेस्ट assert_raises/ में अपवाद संदेशों की जाँच के लिए अपेक्षित सिंटैक्स क्या है must_raise?
मैं निम्नलिखित जैसा कुछ करने की कोशिश कर रहा हूँ, जहाँ "Foo"अपेक्षित त्रुटि संदेश है:
proc { bar.do_it }.must_raise RuntimeError.new("Foo")
मिनीटेस्ट assert_raises/ में अपवाद संदेशों की जाँच के लिए अपेक्षित सिंटैक्स क्या है must_raise?
मैं निम्नलिखित जैसा कुछ करने की कोशिश कर रहा हूँ, जहाँ "Foo"अपेक्षित त्रुटि संदेश है:
proc { bar.do_it }.must_raise RuntimeError.new("Foo")
जवाबों:
आप assert_raisesदावे या must_raiseअपेक्षा का उपयोग कर सकते हैं ।
it "must raise" do
assert_raises RuntimeError do
bar.do_it
end
-> { bar.do_it }.must_raise RuntimeError
lambda { bar.do_it }.must_raise RuntimeError
proc { bar.do_it }.must_raise RuntimeError
end
यदि आपको त्रुटि ऑब्जेक्ट पर कुछ परीक्षण करने की आवश्यकता है, तो आप इसे दावे या अपेक्षा से प्राप्त कर सकते हैं:
describe "testing the error object" do
it "as an assertion" do
err = assert_raises RuntimeError { bar.do_it }
assert_match /Foo/, err.message
end
it "as an exception" do
err = ->{ bar.do_it }.must_raise RuntimeError
err.message.must_match /Foo/
end
end
Minitest::Specऔर नहीं Minitest::Test। स्पेक डीएसएल, उम्मीदों सहित, केवल उपयोग करते समय उपलब्ध हैं Minitest::Spec।
अपवाद का दावा करने के लिए:
assert_raises FooError do
bar.do_it
end
अपवाद संदेश मुखर करने के लिए:
एपीआई डॉक्टर के अनुसार , assert_raisesमिलान किया गया अपवाद लौटाता है ताकि आप संदेश, विशेषताओं आदि की जांच कर सकें।
exception = assert_raises FooError do
bar.do_it
end
assert_equal('Foo', exception.message)
मिनिटेस्ट आपको वास्तविक अपवाद संदेश की जांच करने का एक तरीका (अभी तक) प्रदान नहीं करता है। लेकिन आप एक सहायक विधि जोड़ सकते हैं जो इसे करता है और ActiveSupport::TestCaseअपने रेल परीक्षण सूट में हर जगह उपयोग करने के लिए कक्षा का विस्तार करता है , जैसे: अंदरtest_helper.rb
class ActiveSupport::TestCase
def assert_raises_with_message(exception, msg, &block)
block.call
rescue exception => e
assert_match msg, e.message
else
raise "Expected to raise #{exception} w/ message #{msg}, none raised"
end
end
और अपने परीक्षणों में इसका उपयोग करें जैसे:
assert_raises_with_message RuntimeError, 'Foo' do
code_that_raises_RuntimeError_with_Foo_message
end
must_raiseक्योंकि यह आपको त्रुटि का उदाहरण देता है ताकि आप स्वयं संदेश की जाँच कर सकें।
must_raise।
कुछ और हालिया घटनाक्रमों को जोड़ने के लिए, अतीत में बहुत अधिक भाग्य के बिना मिनिटेस्ट को जोड़ने पर कुछ चर्चाएं हुई हैंassert_raises_with_message ।
वर्तमान में, एक आशाजनक पुल अनुरोध है जो विलय होने की प्रतीक्षा कर रहा है। यदि और जब यह विलय हो जाता है, तो हम assert_raises_with_messageइसे स्वयं परिभाषित करने के बिना उपयोग कर पाएंगे ।
इस बीच, मिनिटेस्ट-बोनस-एसेरिअन्स नाम का यह छोटा सा रत्न है जो कुछ अन्य लोगों के साथ-साथ उस पद्धति को ठीक से परिभाषित करता है, ताकि आप इसे बॉक्स से बाहर कर सकें। अधिक जानकारी के लिए डॉक्स देखें ।