Question

Je suis en cours d'exécution des tests unitaires sur les Rails 2.3 et je continue à faire des erreurs le long de ces lignes, quand je lance rake test:units:

10) Error:
test_the_truth(BrokerTest):
ActiveRecord::StatementInvalid: Mysql::Error: Table 'shadow_test.users' doesn't exist: DELETE FROM `users`
    /Library/Ruby/Gems/1.8/gems/after_commit-1.0.10/lib/after_commit/connection_adapters.rb:14:in `transaction'

J'ai couru rake db:test:load avant cela, et il a créé les tables.Cependant, lorsque je vérifie mysql après l'exécution des tests unitaires de commande, les tables sont en effet absents.Quelque chose dans le processus de préparation pour les tests unitaires, les tables qu'il en manque.Voici le journal de débogage de l'exécution de l'essai:

WARNING: 'task :t, arg, :needs => [deps]' is deprecated.  Please use 'task :t, [args] => [deps]' instead.
    at /Users/me/sources/shadow/lib/tasks/turk.rake:53
** Invoke test:units (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment 
** Execute db:test:purge
** Execute db:test:load
** Invoke db:schema:load (first_time)
** Invoke environment 
** Execute db:schema:load
** Execute test:units
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -I"lib:test" -I"/Library/Ruby/Gems/1.8/gems/rake-0.9.2.2/lib" "/Library/Ruby/Gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb" "test/unit/**/*_test.rb" 
/Library/Ruby/Gems/1.8/gems/bundler-1.1.3/lib/bundler/runtime.rb:211: warning: Insecure world writable dir /usr/local/git/bin in PATH, mode 040777
NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.
Gem.source_index called from /Library/Ruby/Gems/1.8/gems/rails-2.3.14/lib/rails/gem_dependency.rb:21.
WARNING: using the built-in Timeout class which is known to have issues when used for opening connections. Install the SystemTimer gem if you want to make sure the Redis client will not hang.
/Users/me/sources/shadow/test/unit/../test_helper.rb:36: warning: already initialized constant BEANSTALK
Loaded suite /Library/Ruby/Gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_test_loader
Started
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
Finished in 3.389328 seconds.

Un peu plus:Je suis en utilisant le Poulpe pour la fragmentation, et c'est peut-être d'une certaine manière interférer avec les choses??

Était-ce utile?

La solution

À l'aide de la Octopus base de données de fragmentation, le gem a quelques questions sur les cas de test préparation.Voir GitHub question: https://github.com/tchandy/octopus/issues/31.

Vous avez quelques options, le plus simple est de désactiver Octopus pour votre environnement de développement.Suppression de "développement" à partir de votre shards.yml fichier.

Sinon, vous pouvez corriger le problème en ajoutant de la tâche:

 task :reconnect_octopus do
   if ActiveRecord::Base.connection.is_a?(Octopus::Proxy)
     ActiveRecord::Base.connection.initialize_shards(Octopus.config)
   end
 end
 task :'db:test:clone_structure' => :reconnect_octopus

ou pour Rails 3:

 task :reconnect_octopus do
   if ActiveRecord::Base.connection.is_a?(Octopus::Proxy)
     ActiveRecord::Base.connection.initialize_shards(Octopus.config)
   end
 end
 task :'db:structure:load' => :reconnect_octopus

Cela devrait tige votre question énumérés ci-dessus.Amusez-vous bien!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top