0

Ich hatte eine Single-Table-Vererbung Datenmodell, wobei CityPage < Destination. Das hat gut funktioniert.Minitest: Tabelle leer bei Verwendung von STI

Jetzt, da ich einen zweiten Typ CountryPage < Destination hinzugefügt habe, scheitern meine Tests. Genauer gesagt, CityPage.all gibt ein leeres Ergebnis zurück, obwohl ich CityPage Fixtures (die nicht geändert wurden & funktionierte perfekt vorher).

Was mache ich falsch? Warum werden meine Testdaten nicht generiert?

Antwort

0

Wenn Sie STI mit mehr als einem untergeordneten Modell haben, müssen Sie eine Fixtures-Datei nach dem übergeordneten verwenden und die einzelnen Fixtures unter Verwendung der type-Eigenschaft unterscheiden (d. H. Was STI unter der Haube tut). Also in meinem Fall brauchte ich /test/fixtures/destinations.yml, nicht /test/fixtures/{city,country}_pages.yml.

Kurzes Googling zeigt an, dass dies etwas damit zu tun hat, dass Minitest die Datenbank nach Testläufen löscht - siehe Kommentar unten.

+1

Zur Verdeutlichung führt das sequentielle Laden jeder Fixture-Datei dazu, dass die zugehörige Datenbanktabelle vor dem Import jeder Datei geleert wird. Wenn Sie mehrere Fixture-Dateien haben, die letztendlich dieselbe Tabelle verwenden (in diesem Fall "Ziele"), haben Sie eine schlimme Zeit. Die Reihenfolge, in der Ihre YAML-Dateien verarbeitet werden, hängt vom System ab. Daher funktioniert das, was lokal funktioniert, möglicherweise nicht für Ihren CI-Dienst oder umgekehrt. – Barry

Verwandte Themen