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".

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top