2009-10-05 8 views
2

Je reçois l'erreur dans subj lorsque j'essaie d'exécuter des spécifications ou des générateurs dans un projet de rails frais.Constante non initialisée Test :: Unit :: TestResult :: TestResultFailureSupport

Cela se produit lorsque j'ajoute des shoulda au mixage.

j'ajouté ce qui suit dans la config/environment.rb:

config.gem 'rspec', :version => '1.2.6', :lib => false 
config.gem 'rspec-rails', :version => '1.2.6', :lib => false 
config.gem "thoughtbot-shoulda", :version => "2.10.2", :lib => 'shoulda', :source => "http://gems.github.com" 

Je suis sur OSX.

  • rubis 1.8.6 (11/08/2008 patchlevel 287)
  • gemmes 1.3.5
  • rails 2.3.4
  • rspec - 1.2.6
  • shoulda - 2.10.2
  • -unité de test - 2.0.3

Je suis au courant de this et en ajoutant config.gem 'test-unit', :lib => 'test/unit' résout en effet le genrat ou un problème car il ne lance pas d'exception, mais il imprime 0 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications à la fin de l'exécution, donc je suppose qu'il essaie d'exécuter des tests inattendus et non désirés, aussi les spécifications arrêtent de fonctionner, semble que rspec ne fonctionne pas rake specrake spec

+0

suppression gem-unité de test a aidé, mais je ne peux pas appeler cela une solution :( –

Répondre

1

je suis tombé sur un problème similaire récemment et traça à cette engager dans rubygems:

http://github.com/vvs/rubygems/commit/cbb4b07d491dd49b8dff8ab7af706dde31307c7d

qui charge le petit bijou « unité test » si elle est là, ou se déplace silencieusement si ce n'est pas . L'auteur de ce changement n'est peut-être pas conscient d'une vérité fondamentale - que l'activation d'une gemme peut souvent changer le comportement des autres gemmes chargées dans le système. Les développeurs d'applications doivent être en charge de la définition de l'ensemble de gemmes qu'ils veulent activer; que le système rubygems lui-même décide de charger en option une gemme est un gratte-tête.

L'autre moitié de ce problème est la question de savoir pourquoi la gemme de l'unité de test interfère avec rspec. Ceci je ne peux pas répondre, mais je l'ai tracé au fait qu'aucun ExampleGroups n'est enregistré, qui est dû au fait que le callback "hérité" dans ExampleGroupMethods n'est pas appelé quand Rspec crée dynamiquement une nouvelle sous-classe d'ActiveSupport: : TestCase (cela se produit dans ExampleGroupMethods # subclass)

+0

Donc, en y réfléchissant, il n'est pas clair si je parle du même problème ou d'un problème différent. Le problème dont je parle ne se pose que lorsque j'utilise geminstaller, qui nécessite une partie de rubygems ('rubygems/validator') qui essaie alors d'exiger une unité de test, mais qui se déplace silencieusement si la gemme est indisponible. Il ne semble pas que vous utilisiez geminstaller, donc ce n'est pas clair pour moi que c'est rubygems qui tire dans l'unité de test. – user341555

+0

pas sûr non plus et je ne frappe plus ce problème, mais je vais vous accorder des points pour l'effort de toute façon :) Je n'ai pas eu la patience de tout retracer. –

+0

Je pense que c'est lié ... quand je désinstalle l'unité de test, ce problème disparaît. Je n'utilise pas geminstaller. Le problème est que je veux lancer un serveur ci où certains projets utilisent test-unit et d'autres utilisent rspec, donc c'est particulièrement frustrant :( –

0

L'unité de test est intégrée à Ruby, ce qui permet de retirer la gemme de la structure de Ruby. en version À moins que vous n'ayez besoin de quelque chose de spécial qui ne soit pas inclus dans l'unité de test par défaut, je ne m'en soucierais pas trop.

+0

oui, mais si simplement avoir unité de test installé (il était la dépendance pour quelque chose), il y a un problème quelque part, pour l'instant je viens de retirer la gemme de l'unité de test, mais il se peut que je doive la ramener à –

+0

J'ai déjà vu le même problème auparavant –

1

Basé sur une conversation j'ai trouvé here, il semble que le problème n'est pas que RSpec meurt avec toutes les versions de test-unit, seulement que c'est incompatible avec les plus récentes. Donc, désinstaller complètement l'unité de test est une solution de contournement. Mais, si ce n'est pas une option pour vous (car ce n'est pas pour moi), vous pouvez installer une version plus ancienne (par exemple 1.2.3), et assurez-vous simplement qu'il est chargé avant que rspec est.

Par exemple, j'ai ceci dans mon environnement/test.fichier rb, et les tests sont en cours d'exécution à nouveau:

config.gem 'test-unit' , :lib => 'test/unit', :version => '<2.0' 
config.gem "rspec",  :lib => false, :version => '<2.0' 
config.gem "rspec-rails", :lib => false, :version => '<2.0' 
Questions connexes