在rspec中模拟错误/exception(不仅仅是它的类型)

我有一个像这样的代码块:

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来抛出正确的exception类型:

 whatever.should_receive(:do_some_stuff).and_raise(WWW::Mechanize::ResponseCodeError) 

但是当我收到“response_code”时,如何模拟错误对象本身返回503?

 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