¿Por qué falla esta prueba del controlador Rails?
-
21-08-2019 - |
Pregunta
Estoy tratando de entender por qué esta prueba falla.(Soy un poco nuevo en las pruebas). Estoy usando el marco de prueba integrado de Rails con la adición de la gema Shoulda.
La prueba:
require 'shoulda'
context "on GET to :new" do
setup do
get(:new)
end
should_render_template :new
should_not_set_the_flash
end
Falla:
1) Failure:
test: on GET to :new should render template :new. (SessionsControllerTest)
[/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/controller /macros.rb:220:in `__bind_1233882600_699194'
/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/context.rb:254:in `call'
/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/context.rb:254:in `test: on GET to :new should render template :new. '
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb:94:in `__send__'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb:94:in `run']:
expecting <"new"> but rendering with <"">
2 tests, 2 assertions, 1 failures, 0 errors
Pero si lo ejecuto en la consola con app.get '/sessions/new'
funciona bien sin errores.
Y el "new
"La plantilla se representa como se esperaba en el navegador.
Estoy usando Haml.Quizás eso esté causando un problema.Mi plantilla se llama "new.html.haml
".
Solución
El error dice que no se ha renderizado ninguna plantilla.Intente asegurarse de que no lo redirijan con
should_respond_with :success
y afirmar el contenido de @response.body solo para ver lo que se ha devuelto
# This will fail but should give you some clue about what was sent back.
should "sent something back in the body" do
assert_match 'boohooo', @response.body
end
También puedes afirmar una plantilla específica, para poder intentarlo también:
should_render_template "new.html.haml"
Sin embargo, no sospecho que HAML sea la causa de su problema.
Otros consejos
I estaba teniendo un problema similar con Shoulda, liquidación, y Rails 2.3.2. Creo que resuelva el problema mediante la modificación de la forma y el aclaramiento de la debería usar 'assert_template'. Al parecer hay un error accesible en Rails relacionado con este.
Por favor, vea este tema para obtener más información y mi resumen de los cambios (un cambio de línea tanto en Liquidación y Shoulda).
http://groups.google.com/group/shoulda/browse_thread / hilo / 8c0a66c80ff4fd76