परिदृश्यजोर देकर कहा है कि एक विशेष अपवाद ककड़ी में फेंक दिया जाता है
मैं एक पुस्तकालय (ऑन रेल्स कोई रूबी) है जिसके लिए मैं बहुत विस्तृत ककड़ी सुविधाओं करना चाहते हैं लिख रहा हूँ। इसमें विशेष रूप से त्रुटियों/अपवादों का वर्णन करना शामिल है जिन्हें विभिन्न मामलों में फेंक दिया जाना चाहिए।
उदाहरण
सबसे सहज तरीका शायद होगा
की तरह कुछWhen I do something unwanted
Then an "ArgumentError" should be thrown
समस्या
मैं पता करने के लिए है दो मुद्दों कर रहे हैं ककड़ी चरणों में लिखने के लिए:
- अपवाद फेंकने पर पहला चरण विफल नहीं होना चाहिए।
- कुछ दावा फेंकने के लिए पहला कदम फेंकने वाला अपवाद दूसरे चरण तक पहुंच योग्य होना चाहिए।
unelegant और बोझिल समाधान
सबसे अच्छा तरीका मैं के साथ पहले चरण में अपवाद कैशिंग और यह एक उदाहरण चर में डाल कि दूसरे चरण के लिए उपयोग कर सकते हैं है आने के लिए कर लिया है, जैसे इतना:
When /^I do something unwanted$/ do
begin
throw_an_exception!
rescue => @error
end
end
Then /^an "(.*)" should be thrown$/ do |error|
@error.class.to_s.should == error
end
हालांकि, इस दिशा में पहला कदम कम या ज्यादा बेकार मामलों में जहां मैं इसे विफल नहीं चाहते हो में है, और यह एक उदाहरण चर, जो एक अच्छी बात नहीं है की आवश्यकता है।
तो, क्या कोई मुझे कम से कम कम बोझिल समाधान के साथ मदद कर सकता है? या क्या मुझे अपनी विशेषताओं को अलग-अलग लिखना चाहिए? कोई भी सहायताकाफी प्रशंसनीय होगी।
अब यह प्रश्न अच्छी तरह से लिखा गया है! निश्चित रूप से एक अच्छा जवाब का हकदार है (क्षमा करें मैं एक के साथ नहीं आ सकता) :) – user562529
बहुत धन्यवाद @ user562529। दुर्भाग्यवश मुझे यह महसूस हो रहा है कि वास्तव में इस समस्या का कोई आसान समाधान नहीं है, इसलिए मैं सिर्फ एक ककड़ी मुद्दा खोल सकता हूं और आशा करता हूं कि वे कुछ व्यावहारिक लागू करें। – JLimperg