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