warn
Kernel
है, जो हर वस्तु में शामिल है में परिभाषित किया गया है। आप प्रारंभ दौरान चेतावनी को ऊपर उठाने नहीं कर रहे थे, तो आप इस तरह एक चेतावनी निर्दिष्ट कर सकते हैं:
obj = SomeClass.new
obj.should_receive(:warn).with("Some Message")
obj.method_that_warns
एक चेतावनी initialize
विधि में उठाया spec'ing काफी ज्यादा जटिल है। यदि यह किया जाना चाहिए, तो आप $stderr
के लिए नकली IO
ऑब्जेक्ट में स्वैप कर सकते हैं और इसका निरीक्षण कर सकते हैं। बस उदाहरण
class MyClass
def initialize
warn "Something is wrong"
end
end
describe MyClass do
before do
@orig_stderr = $stderr
$stderr = StringIO.new
end
it "warns on initialization" do
MyClass.new
$stderr.rewind
$stderr.string.chomp.should eq("Something is wrong")
end
after do
$stderr = @orig_stderr
end
end
स्रोत
2011-03-27 14:43:36
तुम क्या कर सकते हैं 'SomeClass.allocate' बल्कि' SomeClass से .new', और फिर इसे चाहिए_receive, और फिर शुरू करें? –
'प्रारंभिक' में चेतावनियों के लिए मैंने जिस अन्य दृष्टिकोण का उपयोग किया है, वह है कि मेरी कक्षा कॉल 'कर्नेल.वर्न' स्पष्ट रूप से (केवल 'चेतावनी' के बजाय) है। इसे कर्नेल पर बुलाया जाने की आवश्यकता नहीं है; इसे कुछ वैश्विक पर बुलाया जाना चाहिए कि मैं तत्कालता पर 'must_receive' सेट कर सकता हूं। –