tutorial rails instalar ejemplos ruby-on-rails rspec devise

ruby-on-rails - instalar - rspec rails devise



Probar vistas que usan Devise con RSpec (2)

Eche un vistazo a Rails Composer , esto lo guiará a través de la creación de un nuevo proyecto de Rails con opciones como pruebas, IU, etc.

Cree un proyecto de muestra, lo bueno es que creará todas las pruebas para usted, incluidas las pruebas de vista con el dispositivo. A continuación, puede obtener una idea de esas especificaciones de prueba.

trabajó para mi: D

HTH

¿Estoy tratando de obtener una "especificación de vista" rspec que haya pasado antes de agregar Devise''s user_signed_in? Método a la plantilla de vista en cuestión. La plantilla se ve algo como esto:

<% if user_signed_in? %> Welcome back. <% else %> Please sign in. <% endif %>

La especificación de vista que estaba pasando se ve algo así:

require "spec_helper" describe "home/index.html.erb" do it "asks you to sign in if you are not signed in" do render rendered.should have_content(''Please sign in.'') end end

¿El error que produce después de agregar la llamada a user_signed_in? es:

1) home/index.html.erb asks you to sign in if you are not signed in Failure/Error: render ActionView::Template::Error: undefined method `authenticate'' for nil:NilClass # ./app/views/home/index.html.erb:1:in `_app_views_home_index_html_erb__1932916999377371771_70268384974540'' # ./spec/views/home/index.html.erb_spec.rb:6:in `block (2 levels) in <top (required)>''

Hay muchas referencias a este error en la web, pero todavía tengo que encontrar una respuesta lo suficientemente descriptiva como para que pueda pasar la prueba nuevamente. Creo que el problema tiene algo que ver con la vista (que se está probando en forma aislada de cualquier modelo / controlador) que no tenga alguna infraestructura clave de Devise disponible. Sus sugerencias son apreciadas.

Además, una vez que la prueba pasa, ¿cómo puedo probar la otra ruta (el usuario ya ha iniciado sesión)? Supongo que será muy similar. Gracias.


El error que está recibiendo es porque necesita incluir los dispositivos de prueba de dispositivos.

En general, agregará esto (y es posible que ya tenga) a spec / support / devise.rb

RSpec.configure do |config| config.include Devise::TestHelpers, :type => :controller end

Pero ya que estás creando una especificación de vista, querrás algo como esto:

RSpec.configure do |config| config.include Devise::TestHelpers, :type => :controller config.include Devise::TestHelpers, :type => :view end