Warum ist diese Schienen andernfalls Controller-Test?
-
21-08-2019 - |
Frage
Ich versuche zu verstehen, warum dieser Test fehlschlägt. (Ich bin ein bisschen neu zu Testen.) Ich bin mit dem Einbau-Rails-Test-Framework mit der Zugabe des Shoulda gem.
Der Test:
require 'shoulda'
context "on GET to :new" do
setup do
get(:new)
end
should_render_template :new
should_not_set_the_flash
end
schlägt fehl:
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
Aber wenn ich es auf der Konsole mit app.get '/sessions/new'
laufen funktioniert es ohne Fehler in Ordnung.
Und die "new
" Vorlage rendert wie im Browser erwartet.
Ich verwende Haml. das ist ein Problem verursacht vielleicht. Meine Vorlage "new.html.haml
" genannt.
Lösung
Der Fehler besagt, dass keine Vorlage gemacht wurde. Versuchen Sie, stellen Sie sicher, dass Sie nicht mit umgeleitet werden
should_respond_with :success
und den Inhalt des @ response.body behauptet nur um zu sehen, was zurückgeschickt worden ist
# 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
Sie können auch eine bestimmte Vorlage behaupten, so können Sie ihm einen Schuss geben, auch:
should_render_template "new.html.haml"
Allerdings habe ich nicht den Verdacht HAML die Ursache des Problems zu sein.
Andere Tipps
Ich habe ein ähnliches Problem mit Shoulda, Abstand und Rails 2.3.2. Ich denke, dass ich das Problem gelöst, indem wie shoulda und Clearance Verwendung ‚assert_template‘ zu ändern. Offenbar gibt es einen offenen Fehler in Rails im Zusammenhang mit dieser.
Bitte lesen Sie diesen Thread für weitere Informationen und meine diff der Änderungen (eine Zeile Änderung sowohl in Luft- und Shoulda).
http://groups.google.com/group/shoulda/browse_thread / thread / 8c0a66c80ff4fd76