2009-06-10 3 views
2

Wenn ich einen Datensatz in einem Komponententest erstelle, bekomme ich eine 'ActiveRecord :: RecordInvalid', wenn es mit Rake-Test ausgeführt wird :Einheiten. Ich erhalte diesen Fehler nicht, wenn ich den Komponententest manuell mit Ruby ('ruby unit/blah_test.rb') ausführe. Ich habe das Problem auf eine Validierung beschränkt, die in meinem Modell vorhanden ist. Es ist eine Inklusionsvalidierung, die tatsächlich einen Fund gegen ein anderes Modell durchführt, um die gültigen Werte zu erhalten. Ich denke, das hängt damit zusammen, dass die Geräte nicht rechtzeitig geladen werden, aber ich habe 'fixtures: all' in meinem test_helper.rb (Ich habe auch versucht, 'fixtures: all' im Unit-Test selbst einzubinden.Rails 2.3.2 Komponententest bestanden, wenn mit normalem Rubin ausgeführt wird, fehlschlägt, wenn mit Rake-Test ausgeführt: Einheiten

Hat jemand irgendwelche Vorschläge, wie ich versuche, kann dies noch weiter zu verengen?

Dank.

Antwort

1

Sicherlich, was Sie mit den Befestigungen zu sein, würde passen sehen fehlt. mit rake test:units wird der Test-Datenbankschema eingestellt werden up (und gelöscht), so dass die Fixtures Ihres eingeschlossenen Modells nicht aufgefüllt werden können.Mit dem direkten Aufruf werden Sie die Testdatenbank in dem Zustand verwenden, in dem Sie sie zuletzt verlassen haben, was wahrscheinlich die Fixitierungen für den eingeschlossenen mo enthält del.

Gibt es einen weiteren Aufruf an fixtures in der Testklasse, der dazu führen kann, dass fixtures :all nicht eingreift?

Sie könnten versuchen, rake db:test:prepare vor dem Ausführen Ihres Tests über Ruby zu tun, was bedeuten würde, dass Sie auf einer neuen Testdatenbank ausgeführt wurden. Dies würde weiter hervorheben, wenn die Fixtures nicht für das mitgelieferte Modell geladen werden.

+0

Nachdem ich db: test: prepare ausgeführt habe, laufen meine Tests mit normalem Rubin und geben eine identische Ausgabe aus, um sie durch Rake laufen zu lassen. Vielen Dank. –

Verwandte Themen