Nachdem ich eine neue Migrationsdatei erstellt, die Migration ausgeführt und meine Tests ausgeführt habe, erhalte ich:
%Vor% Sollte das folgende Snippet in rails_helper.rb
nicht die Migrationen auf die Testdatenbank für mich übernehmen?
Aktualisieren
Hier ist mein config/environments/test.rb
wie angefordert:
Beim Ausführen der Tests werden die Konfigurationen in der folgenden Reihenfolge geladen (es sei denn, Sie haben die Reihenfolge der automatischen Ladepfade in Ihrer Rails-App angepasst):
Der ausstehende Migrationsfehler muss daher auf config.active_record.migration_error = true
dieser Konfigurationseinstellung zurückzuführen sein, die irgendwo auf der Rails-Engine geladen wurde rails_helper.rb
, wo ActiveRecord::Migration.maintain_test_schema!
directive definiert ist.
Versuchen Sie, config.active_record.migration_error = false
auf Ihrer config / environments / test.rb zu setzen, um die Migrationsprüfung zu überspringen.
Es könnte zwei Gründe haben.
config/environments/test.rb
vergessen
Fügen Sie config.active_record.maintain_test_schema = true
hinzu, wenn Sie es nicht haben oder setzen Sie es auf true
, wenn Sie es auf false
gesetzt haben.
Aus der Dokumentation
config.active_record.maintain_test_schema ist ein boolescher Wert, der steuert, ob Active Record versuchen sollte, Ihre Testdatenbank zu behalten Das Schema wird bei der Ausführung mit db / schema.rb (oder db / structure.sql) aktualisiert Ihre Tests. Der Standardwert ist wahr.
Aus rspec docs
Was das bedeutet, ist das, anstatt nur zu erhöhen, wenn das Testschema Bei ausstehenden Migrationen versucht Rails, das Schema zu laden. An Ausnahme wird jetzt nur ausgelöst, wenn Migrationen ausstehen danach wurde das Schema geladen.
Prüfen Sie, ob Sie ausstehende Migrationen mit rake db:migrate:status
Auch wenn Sie SQLite 3.7.9 verwenden, sollten Sie sich dies ansehen Diskussion
Sie sollten rails db:migrate RAILS_ENV=test
ausführen, um zuerst Ihre Test-DB zu aktualisieren.
Dies bedeutet, dass Rails versucht, das Schema zu laden, anstatt es nur zu erhöhen, wenn das Testschema ausstehende Migrationen aufweist. Eine Ausnahme wird jetzt nur ausgelöst, wenn nach dem Laden des Schemas ausstehende Migrationen erfolgen.
Es gibt einige Einschränkungen, auf die Sie achten sollten, wenn Sie dies verwenden:
rake db:migrate
ausgeführt werden muss. Tags und Links ruby-on-rails rails-migrations