Obtenir uninitialized constant d'erreur lorsque vous essayez d'exécuter des tests
Je viens de mettre à jour toutes mes gemmes et je trouve que j'ai des erreurs lors de l'exécution de Test::Unit tests. J'obtiens le message d'erreur copié ci-dessous. Qui vient de créer de nouveaux, vide Rails de projet, l'échafaudage d'un modèle simple, et en cours d'exécution rake test
.
Essayé de Googler "uninitialized constant" et TestResultFailureSupport. La seule chose que j'ai trouvé était ce rapport de bug à partir de 2007.
Je suis l'aide de mac OS X.
Ce sont les gemmes que j'ai mis à jour juste avant les tests cessé de travailler:
$ sudo gem outdated
Password:
RedCloth (4.2.1 < 4.2.2)
RubyInline (3.8.1 < 3.8.2)
ZenTest (4.1.1 < 4.1.3)
bluecloth (2.0.4 < 2.0.5)
capistrano (2.5.5 < 2.5.8)
haml (2.0.9 < 2.2.1)
hoe (2.2.0 < 2.3.2)
json (1.1.6 < 1.1.7)
mocha (0.9.5 < 0.9.7)
rest-client (1.0.2 < 1.0.3)
thoughtbot-factory_girl (1.2.1 < 1.2.2)
thoughtbot-shoulda (2.10.1 < 2.10.2)
Quelqu'un d'autre a vu ce problème? Toutes les suggestions de dépannage?
Mise à JOUR
Sur une intuition j'ai rétrogradé ZenTest de 4.1.3 retour à la 4.1.1 et maintenant tout fonctionne à nouveau.
Toujours curieux de savoir si quelqu'un d'autre a vu cela ou a des commentaires intéressants ou des points de vue.
$ rake test
(in /Users/me/foo)
/usr/local/bin/ruby -I"lib:test" "/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/unit/helpers/users_helper_test.rb" "test/unit/user_test.rb"
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:105:in `const_missing': uninitialized constant Test::Unit::TestResult::TestResultFailureSupport (NameError)
from /usr/local/lib/ruby/gems/1.8/gems/test-unit-2.0.2/lib/test/unit/testresult.rb:28
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:158:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/test-unit-2.0.2/lib/test/unit/ui/testrunnermediator.rb:9
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:158:in `require'
... 6 levels...
from /usr/local/lib/ruby/1.8/test/unit/autorunner.rb:214:in `run'
from /usr/local/lib/ruby/1.8/test/unit/autorunner.rb:12:in `run'
from /usr/local/lib/ruby/1.8/test/unit.rb:278
from /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
/usr/local/bin/ruby -I"lib:test" "/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/functional/users_controller_test.rb"
J'ai eu ce problème sur une machine Linux et la désinstallation de test de l'unité de gem a fonctionné pour moi aussi
OriginalL'auteur Ethan | 2009-07-17
Vous devez vous connecter pour publier un commentaire.
Cela peut se produire si les modules sont déclarées dans un état unique, lorsque le module parent ils sont imbriquées à l'intérieur n'a pas encore été chargé. Je n'ai pas regardé le code en ces pierres, mais mon intuition est qu'est ce qui se passe. Chuck est la solution serait de suggérer que. l'appel de
gem 'test-unit'
d'abord charger le module parent, de sorte que la configuration de zen test se termine travail sur ok.par exemple
Provoquera une erreur si le parent Foo module n'a pas déjà été définie (par exemple, par un autre gem)
Un moyen plus sûr de déclarer c'est
Peut-être un bug dans Zentest que les besoins de l'application de correctifs.
module Foo::Bar
pour s'assurer que la "base" a été chargé avant mon patch. C'est aussi pourquoi je préfèreFoo.class_eval
plus de réouverture avecclass Foo
.OriginalL'auteur madlep
Ce qui, apparemment, vient de l'utilisation de Test::Unit 2.0 avec l'ancien Test::Unit. Selon Kouhei Sutou sur RubyForge, il peut être fixé en appelant
gem 'test-unit'
avant de vousrequire 'test/unit'
.OriginalL'auteur Chuck
Que ce lien suggère http://floehopper.lighthouseapp.com/projects/22289-mocha/tickets/50
il peut se produire en raison préliminaire d'initialisation de moka lib.
Pour l'empêcher de happeing il est conseillé d'ajouter la ligne
de config/environment.rb
OriginalL'auteur Anaderi
Voici la recette pour test_unit 2.0.7 sur des Rails 2.3.5:
Dans config/environments/test.rb:
Dans test_helper.rb,
ajouter
require 'test/unit'
,immédiatement après
require 'test_help'
De sorte qu'il ressemble à ceci:
Si vous recevez ce message d'erreur:
%': one hash required (ArgumentError)
,mise à niveau gem
i18n
à v0.3.6.OriginalL'auteur Matt Scilipoti
J'ai été faire cela sans moka ou shoulda installé.
Ce post l'indique, il est dû à une incompatibilité dans le test-unit >= 2.0, j'ai installé comme une dépendance de la systools de pierres précieuses. La rétrogradation à la 1.2.3 a fonctionné pour moi, un simple besoin pourrait aussi.
OriginalL'auteur scottburton11
Même problème avec moi aussi.
Rien de mentionné ci-dessus a fonctionné pour moi, sauf déclassement de test de l'unité de retour à la 1.2.3
Je suis absent la coloration de l'épreuve-l'unité 2.x
redgreen
gem pour obtenir votre coloration du dos.OriginalL'auteur Autodidact
Trouvé l' (laid) solution:
gem 'unit/test'
doit être appelée à l'intérieur de l'tests de trop, pas seulement dans le
Rakefile
.OriginalL'auteur Elia Schito
J'ai couru dans la présente aujourd'hui sur Mac OS X 10.6. Ma solution est la suivante:
OriginalL'auteur Martin Streicher
Comme avec aronchick commentaire, pour moi (OS X 10.6) la solution a été
toutes les versions.
OriginalL'auteur Simon Woodside
Vous obtenez auto_test de travailler à nouveau avec quelque chose comme
OriginalL'auteur radiospiel
Je ne suis pas un nuby pour les rails, mais je suis toujours en apprentissage et, espérons-le sera toujours :-).
Rails 2.3 environnement de production à l'aide de Ruby Enterprise Edition et le passager peuvent produire un totalement trompeuse inutile erreur lors du démarrage (/var/log/passager.le journal). Quelque chose comme:
Exception NameError dans PhusionPassenger::Rack::ApplicationSpawner (uninitialized constant XXX)
Si vous exécutez le script/console sur le serveur de production, vous pouvez voir:
Ce qui se passe pour moi dans ce cas uniquement dans l'environnement de production, pas de scène, pas de développement. Après une journée de recherches et d'expériences, j'ai conclu que, dans l'environnement de production, REE ou quelque chose de pré-charger les classes et les pré-chargeur apparemment n'aime pas à voir les classes de ré-ouvrir avant ils sont créés (une supposition).
Dans app/models/calendrier.rb:
Dans app/models/l'événement.rb
Ci-dessus générique échantillon extrait de code peut causer de problème de démarrage. Je ne suis pas sûr de l'ordre de pré-chargement des classes a lieu, mais je soupçonne que peut être le problème. J'ai déplacé le ‘has_many :événements " dans la définition de classe dans app/modeles/calendrier.rb et mon application démarre sans erreur.
Donc, une bonne règle à suivre est de mettre votre Enregistrement Actif des Associations (has_many, belongs_to) à l'intérieur de la classe de définition (où la classe est créée).
OriginalL'auteur GeezerGeek
Si vous ajoutez la ligne suivante à votre environnement.rb, ou votre config/environments/test.rb, cela devrait résoudre le problème
Je Crois que vous aurez besoin de l'ajouter avant le moka ligne si vous utilisez moka.
OriginalL'auteur Mike Simkins