route ror root_path rails examples ruby-on-rails ruby-on-rails-3 routing devise routes

ruby on rails - ror - ¿Cómo escribir pruebas de controlador cuando anula el controlador de registro de dispositivo?



routes rails examples (2)

El problema es que Devise no puede asignar rutas desde la prueba al controlador original. Eso significa que, si bien su aplicación realmente funciona bien si la abre en el navegador, las pruebas de su controlador seguirán fallando.

La solución es agregar el mapeo de dispositivos a la solicitud antes de cada prueba de la siguiente manera:

before :each do request.env[''devise.mapping''] = Devise.mappings[:user] end

Deseo anular Devise::RegistrationsController para implementar alguna funcionalidad personalizada. Para hacer esto, he creado un nuevo RegistrationsController así:

# /app/controllers/registrations_controller.rb class RegistrationsController < Devise::RegistrationsController def new super end end

y configurar mis rutas como esta:

devise_for :users, :controllers => { :registrations => "registrations" }

Y traté de probarlo así:

describe RegistrationsController do describe "GET ''new''" do it "should be successful" do get :new response.should be_success end end end

pero eso me da un error:

1) RegistrationsController GET ''new'' should be successful Failure/Error: get :new AbstractController::ActionNotFound: Could not find devise mapping for path "/users/sign_up". Maybe you forgot to wrap your route inside the scope block? For example: devise_scope :user do match "/some/route" => "some_devise_controller" end # ./spec/controllers/registrations_controller_spec.rb:13:in `block (3 levels) in <top (required)>''

Entonces, ¿qué estoy haciendo mal?


Su ruta debe verse así:

devise_for :users, :controllers => { :registrations => "registrations" } do get "/users/sign_up/:invitation_token" => ''registrations#new'' end