উত্তর:
expect { some_method }.to raise_error
আরএসপেক 1 সিনট্যাক্স:
lambda { some_method }.should raise_error
আরও জন্য ডকুমেন্টেশন (আরএসপেক 1 সিনট্যাক্সের জন্য) এবং আরএসপেক 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।
আরএসপেক 2:
আরএসপেক 1:
ল্যাম্বদা পরিবর্তে, প্রত্যাশা ব্যবহার করুন:
expect { some_method }.to raise_error
এটি আরএসপেকের সাম্প্রতিক সংস্করণগুলির জন্য প্রয়োগ করা হয়, অর্থাৎ আরএসপেক ২.০ এবং তার বেশি সংস্করণ।
আরও জন্য ডকো দেখুন।
expectতার চেয়ে ভাল বা খারাপ তা ব্যাখ্যা করে না lambda।
expect { visit welcome_path }.to raise_error
rspec-expectionsরত্নের ৩.৩ সংস্করণ থেকে কোনও পরামিতি ছাড়াই ফাঁকা উত্থাপন_ররের জন্য একটি সতর্কতা উত্থাপন করা হয়েছে
expect { raise StandardError }.to raise_error # results in warning
expect { raise StandardError }.to raise_error(StandardError) # fine
এটি আপনাকে এমন একটি ইঙ্গিত দেয় যা আপনার কোড পরীক্ষা করার উদ্দেশ্যে পরীক্ষার চেয়ে আলাদা ত্রুটির সাথে ব্যর্থ হতে পারে।
সতর্কতা:
raise_errorনির্দিষ্ট ত্রুটি বা বার্তা সরবরাহ না করে ম্যাচার ব্যবহার করা মিথ্যা ধনাত্মক ঝুঁকির ঝুঁকি রয়েছে, যেহেতুraise_errorরুবি যখন উত্থাপন করবে তখনই মিলবেNoMethodError,NameErrorবাArgumentErrorআপনি যে পদ্ধতিতে কল করতে চান সেই পদ্ধতিটি কার্যকর না করেও প্রত্যাশাটি পাস করার সম্ভাবনা দেয়। পরিবর্তে একটি নির্দিষ্ট ত্রুটি শ্রেণি বা বার্তা সরবরাহ বিবেচনা করুন। এই বার্তাটি সেটিংস এর দ্বারা supressed করা যেতে পারে:RSpec::Expectations.configuration.warn_about_potential_false_positives = false।