[RUBY] RSpec gibt ActiveRecord :: StatementInvalid an: Tabelle konnte nicht gefunden werden

Error

ActiveRecord::StatementInvalid: Could not find table

DB-Tabelle kann beim Ausführen des Tests nicht gefunden werden

Was ich versucht habe

rails db:migrate:reset RAILS_ENV=test

Setzen Sie die Test-DB mit zurück

rails dbconsole -e test

sqlite> .table

Überprüfen Sie, ob die Tabelle mit gemacht ist. Erstellt.

Viele Leute denken, dass dies die Lösung ist, aber wenn Sie den Test erneut ausführen,

ActiveRecord::StatementInvalid: Could not find table

Gleicher Fehler.

Und als ich den Tisch noch einmal überprüfte, verschwand der Tisch.

Was ich darauf basierend versucht habe

Entfernen Sie ActiveRecord :: Migration.maintain_test_schema!

bei rails_helper.rb

rails_helper.rb


#Code zum Auskommentieren
ActiveRecord::Migration.maintain_test_schema!

Ich habe das auskommentiert.

Dann habe ich bestanden. Die Tabelle wurde jedoch noch nicht erstellt, und alle Tests, die die Tabelle verwenden, sind fehlgeschlagen.

Was ist ActiveRecord :: Migration.maintain_test_schema?

Code zum automatischen Migrieren der Test-DB, indem Sie sich schema.rb ansehen, bevor Sie rspec ausführen.

Ich dachte, dass es ein Problem mit dem Schema geben könnte, dass der Test ausgeführt wird, indem dieses entfernt wird, also habe ich es bestätigt.

Die Tabelle "Tabellenname" konnte aufgrund des folgenden StandardError nicht ausgegeben werden

Es wurde so in die Schemadatei geschrieben.

Die Tabelle kann nicht im Schema wiedergegeben werden.

Überprüfen Sie die Migrationsdatei

Dann

migration_name.rb


  def up
    change_column :comments, :discovery_id, :reference, null: true
  end

Es gab einen Teil, der sein sollte.

Es gibt keinen Hinweis auf den Typ, aber aus irgendeinem Grund habe ich dies getan.

Ändern: Verweis auf: Ganzzahl und Schienen db: migrieren: zurücksetzen Wurde im Schema beschrieben.

Führe es nochmals aus

Setzen Sie die Migration erneut zurück, nachdem Sie im Schema gut dokumentiert wurden

rails db:migrate:reset RAILS_ENV=test

Und kommentieren Sie ActiveRecord :: Migration.maintain_test_schema aus!

rails_helper.rb


#Kommentar
ActiveRecord::Migration.maintain_test_schema!

Und führen Sie den Test aus

bin/rspec

Ich habe alle Tests bestanden.

Zusammenfassung

Testausführung → Tabelle nicht gefunden → Zurücksetzen und Migrieren in der Testumgebung → Tabelle wurde erstellt → Testausführung erneut → Fehlend und nicht gefunden → Lesen Sie das Schema nicht unmittelbar vor der Ausführung → Testarbeiten → Tabelle, die nicht im Schema gefunden wurde, wird beschrieben Nicht erledigt → Richtig migrieren → Testlauf

Es war so.

Recommended Posts

RSpec gibt ActiveRecord :: StatementInvalid an: Tabelle konnte nicht gefunden werden
gradle tools.jar konnte nicht gefunden werden. Fehler-Gegenmaßnahmen
ActiveRecord :: StatementInvalid (SQLite3 :: SQLException: keine solche Tabelle: main.follows ~