ich habe meine Controller mit dem before_filter gesichert, so dass sie erst nach einem Login zu erreichen sind.
Als ein Beispiel habe ich meinen Unit Controller aufgeführt:
- Code: Alles auswählen
class UnitsController < ApplicationController
before_filter :login_required
def index
@units = Unit.all
end
def show
@unit = Unit.find(params[:id])
end
def new
@unit = Unit.new
end
...
Wenn ich nun die Tests mit rake test ausführe, schlagen sie fehl.
Ich habe einmal nur den Unit Test ausgeführt mit: ruby -Itest test/functional/units_controller_test.rb
Die folgenden Fehler werden dann angezeigt:
- Code: Alles auswählen
Loaded suite test/functional/units_controller_test
Started
FEFFFEFFF
1) Failure:
test_create_invalid(UnitsControllerTest) [test/functional/units_controller_test.rb:34]:
expecting <"new"> but rendering with <"">
2) Error:
test_create_valid(UnitsControllerTest):
ActionController::RoutingError: No route matches {:action=>"show", :controller=>"units"}
test/functional/units_controller_test.rb:40:in `test_create_valid'
3) Failure:
test_destroy(UnitsControllerTest) [test/functional/units_controller_test.rb:63]:
Expected response to be a redirect to <http://test.host/units> but was a redirect to <http://test.host/login>.
4) Failure:
test_edit(UnitsControllerTest) [test/functional/units_controller_test.rb:45]:
expecting <"edit"> but rendering with <"">
5) Failure:
test_index(UnitsControllerTest) [test/functional/units_controller_test.rb:17]:
expecting <"index"> but rendering with <"">
6) Error:
test_new(UnitsControllerTest):
NoMethodError: undefined method `login_as' for test_new(UnitsControllerTest):UnitsControllerTest
test/functional/units_controller_test.rb:26:in `test_new'
7) Failure:
test_show(UnitsControllerTest) [test/functional/units_controller_test.rb:22]:
expecting <"show"> but rendering with <"">
8) Failure:
test_update_invalid(UnitsControllerTest) [test/functional/units_controller_test.rb:51]:
expecting <"edit"> but rendering with <"">
9) Failure:
test_update_valid(UnitsControllerTest) [test/functional/units_controller_test.rb:57]:
Expected response to be a redirect to <http://test.host/units/298486374> but was a redirect to <http://test.host/login>.
Finished in 1.50476625 seconds.
9 tests, 9 assertions, 7 failures, 2 errors, 0 pendings, 0 omissions, 0 notifications
0% passed
5.98 tests/s, 5.98 assertions/s
Wenn ich die Zeile before_filter :login_required aus dem Unit Controller wieder entferne, laufen die Tests ohne Fehler durch.
Ich habe nun schon zwei Tage gegoogled, um dafür eine Lösung zu finden ,aber entweder werden andere Ansätze verfolgt, oder es ist nicht auf mein Beispiel anwendbar.
Ich habe wirklich keine Ahnung, wo ich noch suchen soll. Obwohl ich eigentlich denke, dass ich da nichts besonderes erstellt habe und das andere das auch so machen?
Ich hoffe wirklich auf Hilfe.

