[RUBY] RSpec donne ActiveRecord :: StatementInvalid: Impossible de trouver la table

Erreur

ActiveRecord::StatementInvalid: Could not find table

Impossible de trouver la table DB lors de l'exécution du test

Ce que j'ai essayé

rails db:migrate:reset RAILS_ENV=test

Réinitialisez le DB de test avec

rails dbconsole -e test

sqlite> .table

Vérifiez si la table est faite avec. Créé.

Beaucoup de gens pensent que c'est la solution, mais si vous relancez le test,

ActiveRecord::StatementInvalid: Could not find table

Même erreur.

Et quand j'ai vérifié à nouveau la table, la table a disparu.

Ce que j'ai essayé sur cette base

Supprimez ActiveRecord :: Migration.maintain_test_schema!

à rails_helper.rb

rails_helper.rb


#Code à commenter
ActiveRecord::Migration.maintain_test_schema!

J'ai commenté cela.

Puis je suis passé. Cependant, la table n'a pas encore été créée et tous les tests utilisant la table ont échoué.

Qu'est-ce que ActiveRecord :: Migration.maintain_test_schema!

Code pour la migration automatique de la base de données de test en consultant schema.rb avant d'exécuter rspec.

Je pensais qu'il pourrait y avoir un problème avec le schéma selon lequel le test est exécuté en supprimant ceci, alors je l'ai confirmé.

Impossible de vider la table "nom de la table" en raison de l'erreur StandardError suivante

Il a été écrit comme ceci dans le fichier de schéma.

La table ne peut pas être reflétée dans le schéma.

Vérifiez le fichier de migration

Puis

migration_name.rb


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

Il y avait une partie qui était censée être.

Il n'y a aucune référence dans le type, mais pour une raison quelconque, je l'ai fait.

Modification: référence à: entier et rails db: migrate: reset A été décrit dans le schéma.

Courez à nouveau

Réinitialiser à nouveau la migration après avoir été bien documenté dans le schéma

rails db:migrate:reset RAILS_ENV=test

Et décommentez ActiveRecord :: Migration.maintain_test_schema!

rails_helper.rb


#Décommenter
ActiveRecord::Migration.maintain_test_schema!

Et lancez le test

bin/rspec

J'ai réussi tous les tests.

Résumé

Exécution du test → Table non trouvée → Réinitialiser et migrer dans l'environnement de test → La table a été créée → Exécution du test à nouveau → Manquant et introuvable → Ne pas lire le schéma immédiatement avant l'exécution → Tester les travaux → La table non trouvée dans le schéma est décrite Pas terminé → Migrer correctement → Test de fonctionnement

C'était comme ça.

Recommended Posts

RSpec donne ActiveRecord :: StatementInvalid: Impossible de trouver la table
gradle Impossible de trouver tools.jar. Contre-mesures d'erreur
ActiveRecord :: StatementInvalid (SQLite3 :: SQLException: aucune table de ce type: main.follows ~