У меня есть следующее в моих контроллерах 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, кроме того, в котором написана спецификация?