Pourquoi est-ce Rails test du contrôleur défaillant?
-
21-08-2019 - |
Question
Je suis en train de comprendre pourquoi ce test est un échec. (Je suis un peu nouveau pour le test.) J'utilise le framework de test Rails intégré avec l'ajout de la gemme Shoulda.
Le test:
require 'shoulda'
context "on GET to :new" do
setup do
get(:new)
end
should_render_template :new
should_not_set_the_flash
end
Ne parvient pas:
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
Mais si je l'exécute sur la console avec il fonctionne très bien app.get '/sessions/new'
sans erreur.
Et le modèle "new
" Renders comme prévu dans le navigateur.
J'utilise Haml. Peut-être qui cause un problème. Mon modèle est appelé "new.html.haml
".
La solution
L'échec dit qu'aucun modèle a été rendu. Essayez de vous assurer que vous n'êtes pas redirigé avec
should_respond_with :success
et faire valoir le contenu du @ response.body juste pour voir ce qui a été renvoyé
# 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
Vous pouvez également faire valoir un modèle spécifique, vous pouvez donc donner un coup de feu aussi:
should_render_template "new.html.haml"
Cependant, je ne pense pas HAML être la cause de votre problème.
Autres conseils
J'avais un problème similaire avec Shoulda, dégagement et Rails 2.3.2. Je pense que je résolu le problème en modifiant la façon dont l'utilisation Shoulda et la clairance « assert_template ». Apparemment, il y a un bug ouvert dans Rails en rapport avec cela.
S'il vous plaît voir ce fil pour plus d'infos et mon diff des changements (un changement de ligne à la fois Dépollution et Shoulda).
http://groups.google.com/group/shoulda/browse_thread / fil / 8c0a66c80ff4fd76