Rails / RSpec: «добраться» до другого контроллера

У меня есть следующее в моих контроллерах Rails 3 / application.rb (для которого я пытаюсь написать спецификацию):

  rescue_from CanCan::AccessDenied do |exception|
    flash[:alert] = t(:access_denied)
    if (current_user) then
      redirect_to root_url
    else
      session[:direct_redirect] = request.url
      redirect_to new_user_session_url
    end
  end

I ' Я хотел бы написать несколько спецификаций, чтобы убедиться, что функциональность работает. Я поместил тесты в spec / controller / application_controller_spec.rb, и думаю, мне нужно написать что-нибудь вроде:

  it "should redirect to the root url" do
    controller.stub(:authorize!) { raise CanCan::AccessDenied }
    get :index
    response.should redirect_to(root_url)
  end

Проблема в том, что строка get: index. возвращает ошибку «нет совпадений маршрута с контроллером => приложение». «Достаточно честно», подумал я и попытался выполнить маршрутизацию к другому контроллеру. Были предприняты следующие попытки:

* get :controller => 'purchases', :action => :index
* get purchases_url
* get '/purchases/'

Все они интерпретировались как действие в «приложении» контроллер.

Итак, как я могу выполнить маршрутизацию к контроллеру в rspec, кроме того, в котором написана спецификация?

15
задан PlankTon 4 October 2011 в 04:43
поделиться