Высмеивая ошибку/исключение в rspec (а не только его тип)
У меня есть блок кода вроде этого:
def some_method
begin
do_some_stuff
rescue WWW::Mechanize::ResponseCodeError => e
if e.response_code.to_i == 503
handle_the_situation
end
end
end
Я хочу проверить, что происходит в этом разделе if e.response_code.to_i == 503
. Я могу высмеять do_some_stuff, чтобы выбросить правильный тип исключения:
whatever.should_receive(:do_some_stuff).and_raise(WWW::Mechanize::ResponseCodeError)
но как мне высмеять сам объект ошибки, чтобы вернуть 503, когда он получает "response_code"?
Ответы
Ответ 1
require 'mechanize'
class Foo
def some_method
begin
do_some_stuff
rescue WWW::Mechanize::ResponseCodeError => e
if e.response_code.to_i == 503
handle_the_situation
end
end
end
end
describe "Foo" do
it "should handle a 503 response" do
page = stub(:code=>503)
foo = Foo.new
foo.should_receive(:do_some_stuff).with(no_args)\
.and_raise(WWW::Mechanize::ResponseCodeError.new(page))
foo.should_receive(:handle_the_situation).with(no_args)
foo.some_method
end
end