2010-05-29 14 views
5

Ich habe einige Gerüste für meine Rails App generiert.Warum versagen meine Funktionstests?

Ich führe die generierten Tests und sie sind fehlgeschlagen.

zum Beispiel

test "should create area" do 
    assert_difference('Area.count') do 
     post :create, :area => { :name => 'area1' } 
    end 

    assert_redirected_to area_path(assigns(:area)) 
    end 

Dieser Test versagt sagen, dass:

1) Fehler: test_should_create_area (AreasControllerTest) [/test/functional/areas_controller_test.rb:16]: "Area.count" änderte sich nicht um 1. < 3> erwartet, aber war < 2>.

Es gibt nur ein Feld im Modell: name. Ich bevölkere das, deshalb kann es nicht sein, weil ich das einzige Feld nicht bevölkere.

Ich kann die Website ausführen und einen Bereich mit dem Namen 'Area1' erstellen. Die Realität ist also erfolgreich, aber der Test versagt.

Ich kann nicht fragen, warum es scheitert, weil ich sicher bin, dass es nicht genügend Informationen hier für irgendjemanden hier gibt, warum zu wissen. Ich bin nur daran hängen zu wissen, welche Wege zu gehen, um herauszufinden, warum der Test versagt. Sogar Putts in den Code nicht drucken ...

Welche Schritte kann ich ergreifen, um dies zu verfolgen?

+0

Die Ausgabe von test.log sollte hier hilfreich sein, damit Sie sehen können, ob tatsächlich ein Bereich erstellt wird oder ob ein SQL-Fehler vorliegt, der gerade gegessen wird. – jdl

+0

Aaahh ... Ok, das hilft. Test.log zeigt mir, dass der Test fehlschlägt, weil ich nicht eingeloggt bin. Ich habe es so eingerichtet, dass nur authentifizierte Benutzer Bereiche erstellen können. Alles ist sinnvoll. Sie sollten das eine Antwort geben, damit ich es annehmen kann! Vielen Dank –

Antwort

2

Gemäß der obigen Anfrage und übereinstimmend mit dem, was ich erwartet hatte, dass Sie feststellen würden, wenn Sie in Ihre Protokolle gegraben haben, haben Sie eine Berechtigung, die in Ihrem Test nicht erfüllt wird.

1

@request und @response sind auch nützliche Objekte zu betrachten (d. H. puts @response in Ihrem Test). Ich weiß nicht, welche Authentifizierung Sie verwenden, aber überprüfen Sie RAILS_ROOT/lib für authenticated_test_helper oder /lib oder /test Ihrer Authentifizierung gem. Sie finden Methoden zum Ausführen einer Anmeldung.