RSpec: тестирование rescue_from

Как я могу проверить rescue_from, это RSpec? Я хотел бы убедиться, что если возникает одно из исключений, то контроллер правильно устанавливает флеш-память и выполняет перенаправление. Есть ли способ имитировать исключение?

  rescue_from PageAccessDenied do
    flash[:alert] = "You do not have the necessary roles to access this page"
    redirect_to root_url
  end

  rescue_from CanCan::AccessDenied do |exception|
    flash[:alert] = exception.message
    redirect_to root_url
  end

Ответы

Ответ 1

Предполагая, что у вас есть метод authorize!, который вызывает исключение, вы должны сделать что-то вроде этого:

  describe "rescue_from exceptions" do
    it "rescues from PageAccessDenied" do
      controller.stub(:authorize!) { raise PageAccessDenied }
      get :index
      response.should redirect_to("/")
      flash[:alert].should == "You do not have the necessary roles to access this page"
    end
  end