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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top