Pergunta

Eu estou tentando entender por que este teste está falhando. (Eu sou uma espécie de novo para testar.) Eu estou usando o framework built-in Rails testar com a adição da gema Shoulda.

O teste:

require 'shoulda'

context "on GET to :new" do

  setup do
    get(:new)
  end

  should_render_template :new
  should_not_set_the_flash

end

falha:

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

Mas se eu executá-lo no console com app.get '/sessions/new' trabalha muito bem com nenhum erro.

E o modelo "new" torna como esperado no browser.

Eu estou usando Haml. Talvez isso está causando um problema. Meu modelo é chamado de "new.html.haml".

Foi útil?

Solução

O fracasso diz que nenhum modelo tenha sido prestado. Tente se certificar de que você não está sendo redirecionada com

should_respond_with :success

e afirmar o conteúdo do @ response.body só para ver o que está sendo enviado de volta

# 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

Você também pode valer um modelo específico, para que possa dar-lhe um tiro, também:

should_render_template "new.html.haml"

No entanto, eu não HAML suspeito de ser a causa do seu problema.

Outras dicas

Eu estava tendo um problema semelhante com Shoulda, Clearance, e Rails 2.3.2. Eu acho que resolveu o problema, modificando como deveria ter e uso de apuramento 'assert_template'. Aparentemente, há um bug aberto no Rails relacionado a isso.

Por favor, veja esta discussão para mais informações e meu diff das mudanças (uma mudança de linha em ambos os Apuramento e Shoulda).

http://groups.google.com/group/shoulda/browse_thread / thread / 8c0a66c80ff4fd76

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top