11
votes

Exécuter des tests de rails sans base de données de test de dépression

Vous vous demandez simplement s'il y a un moyen de lancer des tests de rails sans laisser tomber la base de données. Je ne fais actuellement que l'exécution des tests d'unité et je suis à l'aide de la commande Rake suivante pour le faire: Test de Rake: Unités .

Merci pour l'aide à l'avance!

Juste au cas où cela est pertinent:

  • Rails 3
  • Ruby 1.8.7 (IRM)
  • Base de données Oracle 11G
    • Actioniverecord-oracle_enhanced-Adapter

0 commentaires

6 Réponses :


3
votes

Après avoir fait des recherches, j'ai constaté qu'il n'y a pas de moyen de faire cela. Les tâches de test de test supprimeront toujours la base de données, même lorsque vous fournissez l'option TEST = AS Bohdan suggère.

En utilisant le - TRACE option, cela peut être prouvé. Voici la sortie: xxx

lecture via le Ruby sur Rails Guides pour tester , il décrit ce que certaines de ces tâches de râteau signifient. Celui à payer une attention particulière à l'attention est le DB: Test: charger tâche, que vous voyez sur la 7ème ligne à partir du bas de la sortie sous ** Exécutez dB: test: charge . Les guides disent ce qui suit sur cette tâche:

recréer la base de données de test de la Schema.rb actuel

Donc, même si je devais exécuter les tests de l'unité, un par un comme Bohdan le suggère, la tâche Rake serait toujours recréer la base de données. Pas la réponse que j'espérais, mais ce n'est plus un problème.

La raison pour laquelle je demandais de commencer était parce que je n'avais pas accès à une autre base de données à utiliser pour les tests. J'utilisais donc ma base de données de développement pour les tests. Mais depuis lors, j'ai pu obtenir une autre base de données dédiée aux tests.

merci quand même Bohdan! J'apprécie l'aide!


1 commentaires

Heureux de l'entendre. Votre base de données de test devrait être effacée à chaque fois que vous exécutez des tests, sinon vos tests seront inexacts.



-1
votes

Pourriez-vous ne pas écrire une tâche de râteau personnalisée que le singe a patché le Rake DB: Test: Charger la tâche pour ne rien faire?


0 commentaires

1
votes

Il s'agit d'un post plutôt ancien qui fait que le singe corrigeait les tâches de purge / chargement primordial: http: // www.pervasivecode.com/blog/2007/09/22/making-rails-raketest-not-drop-Your-pgsql-Database/


1 commentaires

Des réponses similaires peuvent être trouvées ici: Stackoverflow.com/q/24785428/680464 ---- et ici: Stackoverflow.com/q/8112074/680464



1
votes

Pour ceux qui recherchent un moyen de sauter le comportement par défaut des rails, essayez d'ajouter ceci à votre RakeFile:

Rake::Task["db:test:prepare"].clear
Rake::Task["db:test:load"].clear
Rake::Task["db:test:purge"].clear


0 commentaires

6
votes

dans Rails 5 (et éventuellement versions), commencez simplement la ligne suivante dans SPEC / Rails_Helper.rb CODE>:

 ActiveRecord::Migration.maintain_test_schema!


1 commentaires

Cela devrait vraiment être la réponse acceptée maintenant.



4
votes

Pour les rails 5.2 Ce problème peut être modifié paramètre gérer_test_schema à FALSE dans test / test_helper.rb avant Importation Rails / Test_Help : xxx

rails / test_help vérifiera la valeur de gérer_test_schema pour décider si elle doit déposer / créer / migrer la base de données de test ou non.


0 commentaires