Lorsque j'exécute une des tâches rspec via rake, la base de données semble être supprimée et migrée, mais si je la lance via script/spec path/to/spec, elle ne le fait pas t. Y a-t-il une option que je peux définir pour que la spécification rake ne touche pas la base de données?"rake spec" migre la base de données à chaque fois
Répondre
Il ne doit pas exécuter de migrations, en important uniquement db/schema.rb dans votre base de données de test. C'est le comportement attendu de sorte que vos tests utilisent une nouvelle copie du schéma de base de données avant de s'exécuter. Quel est votre raisonnement pour ne pas vouloir actualiser la base de données de test?
Pour ce que je fais, je le veux définitivement. Donc, avec rspec 2.5.0 et rails 3:
Copie rspec.rake à votre apps/lib/tâches de:
~/.rvm/gems/ruby-1.8.7-p302/gems/rspec-rails-2.5.0/lib/rspec/rails/tasks/rspec.rake
Ajouter ce au début du fichier:
Rake::TaskManager.class_eval do
def remove_task(task_name)
@tasks.delete(task_name.to_s)
end
end
def remove_task(task_name)
Rake.application.remove_task(task_name)
end
remove_task 'spec'
Rechercher et modifier cette ligne pour forcer un noop:
spec_prereq = :noop #Rails.configuration.generators.options[:rails][:orm] == :active_record ? "db:test:prepare" : :noop
J'ai eu ce même problème aussi lors de l'exécution rspec de la ligne de commande. Dans mes cas, je travaillais avec une base de données héritée qui n'avait aucune migration, donc les tests échouaient parce que les migrations ne pouvaient pas être exécutées.
La solution est de modifier le fichier de spécification/spec_helper.rb et supprimez la ligne suivante:
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
Après que les tests ont couru sans faillir.
- 1. Est-ce que les tests spec migrent dbs à chaque test?
- 2. Ruby on Rails Rspec émigre base de données lors de l'exécution spec rake: plugins
- 3. « spec râteau » fonctionne, « spec spec » ne
- 4. Mauvais chemin ruby utilisé dans la tâche de rake exécutée comme cron through à chaque fois
- 5. Problème d'utilisation à chaque fois gem
- 6. Comment exécuter une tâche de rake juste après l'initialisation de la base de données par rspec
- 7. jQuery: transmettre des données différentes à periodicalupdater à chaque fois?
- 8. La base de données Android recrée chaque fois que l'application est lancée
- 9. Rails3 RSpec efface la mauvaise base de données?
- 10. Le serveur d'applications a-t-il besoin d'un rebond à chaque fois que la base de données est rejetée?
- 11. Comment arrêter la reconfiguration de cpan à chaque fois? + Plus
- 12. alter plusieurs bases de données MySQL à la fois (base de données change pbsl)
- 13. Hibernate rejoint chaque table dans la base de données
- 14. EJB Spec Violation
- 15. Console.SetWindowPosition -> centré (à chaque fois)
- 16. Ne pas récupérer app.manifest à chaque fois
- 17. Enregistrement de plus de 1000 enregistrements dans la base de données à la fois
- 18. Le contexte LINQ doit-il être fermé à chaque fois?
- 19. Objet de base de données pour chaque classe ou site?
- 20. silverlight XAP est téléchargé à chaque fois
- 21. ASP.NET MVC 2 - Éviter plusieurs fois l'interrogation de la base de données pour des données statiques?
- 22. spec howto pas tous les modèles
- 23. Wordpress ajouter des données à la table (base de données)
- 24. Accélérer l'accès à la base de données
- 25. SQLAlchemy - Résultats de base de données sur chaque demande?
- 26. Rails chaque fois que la gestion d'erreur gem
- 27. Comment effectuer plusieurs modifications de base de données à la fois en utilisant NHibernate?
- 28. Connectez-vous chaque requête SQL à la base de données dans Rails 3
- 29. Utilisation de plusieurs bases de données SQLite à la fois
- 30. Stockez la liste HTML sans mettre à jour chaque ligne dans la base de données?
Y at-il un moyen de désactiver cela? Pour une raison quelconque, les développeurs de ce projet ont décidé de ne pas utiliser les migrations de rails pour gérer la base de données, l'importation de schema.rb n'est donc pas une option valide. – AdamB
Si vous avez une tâche rspec.rake, recherchez une ligne contenant db: test: préparez et commentez. Cela devrait l'empêcher d'essayer de charger le schéma. Sans schéma, comment comptez-vous construire la base de données de test? –
qui a fait l'affaire, merci! – AdamB