2010-08-02 17 views
34

¿Cómo codificaría Devise in Rails 3 con rSpec. Tengo un UsersController y un modelo User. Ambos están asociados con Devise en este momento, estoy escribiendo las especificaciones del controlador y realmente estoy teniendo dificultades con mis expectativas ya que el Devise sign_in realmente está interfiriendo en las obras.Stubbing Devise en rSpec y Rails3

Cualquier cosa ayudará.

+2

Con legado, puede stub por completo el modelo de usuario: https://github.com/plataformatec/devise/wiki/How-To:-Stub-authentication-in-controller-specs – Flov

Respuesta

74

Descubrí que ahora es bastante fácil hacerlo. Hubo un problema con rspec2 y el dispositivo, pero ahora está resuelto. Supongo que necesitarías actualizar tus gemas. A continuación, puede escribir

require 'spec_helper' 

describe DoStuffController do 
    include Devise::TestHelpers 

    before (:each) do 
    @user = Factory.create(:user) 
    sign_in @user 
    end 

    describe "GET 'index'" do 
    it "should be successful" do 
     get 'index' 
     response.should be_success 
    end 
    end 
end 

[ACTUALIZACIÓN] En el legado wiki ahora hay una detallada (y probablemente más arriba-hasta la fecha) description.

+7

Solo como una nota para los demás que puedan encontrar esto. Si usa la confirmación, asegúrese de que su fábrica defina: confirm_at o la transfiera. – RyanJM

+2

Hay una descripción detallada de esto en la wiki de diseño: https://github.com/plataformatec/devise/wiki/How-To:-Controllers -and-Views-tests-with-Rails-3- (and-rspec) –

+0

@KevinBedell, la URL es casi correcta, falta el último ')'. Por lo tanto, la URL correcta es [esto] (https://github.com/plataformatec/devise/wiki/How-To:-Controllers-and-Views-tests-with-Rails-3-%28and-rspec%29) – Zabba

9

Puede intentar burlarse del objeto warden subyacente (http://wiki.github.com/hassox/warden/) que se basa en el dispositivo, aquí hay un enlace a algunos detalles sobre cómo puede lograr esto con RSpec: http://www.michaelharrison.ws/weblog/?p=349 (la entrada también cubre otros temas, la solución que desea está hacia la parte inferior de la página.)

+0

Gracias tanto! Justo lo que he estado buscando. – stuartc

+0

La nueva respuesta a continuación proporciona una mejor manera http://stackoverflow.com/questions/3387485/stubbing-devise-in-rspec-and-rails3/3512813#3512813 –

Cuestiones relacionadas