2009-06-30 3 views
1

Je ne sais pas quoi et quand happend sur mon code, mais je suis hundereds erros similaires (pas d'échecs)Rails tests unitaires allé complètement faux

de ceci:

NameError: uninitialized constant ActiveSupport::Callbacks::Callback::NORMAL 

Et ma fonction tests seulement aller inutile maintenant, même comme je l'ai mis quelque chose comme:

should "failed" do 
    assert false 
end 

Il revient encore passé, une idée?

Merci

+0

S'il vous plaît afficher les trace complète de la pile. Notez également que should n'est pas une méthode Rails standard, mais qu'il nécessite shoulda GEM. –

Répondre

0

Le problème été pris en compte.

Merci de votre aide quand même.

Le problème est non initialisée ActiveSupport constante :: :: Callback :: Callbacks NORMAL

J'ai trouvé une validation dans le modèle

validates_presence_of :time_purchased,   :if => "self.usage_type == NORMAL" 

NORMAL est une chaîne de type je veux vérifier, dans ce erreur, c'est vraiment déroutant, faites-moi croire que c'est quelque chose qui ne va pas avec l'ActiveSupport.

le bon doit être

validates_presence_of :time_purchased,   :if => "self.usage_type == 'NORMAL'" 
+0

La confusion se produit parce que Ruby (ou l'une des bibliothèques) met "self.usage_type == NORMAL" à travers une fonction eval(): il exécute réellement la chaîne, donc il cherche une constante nommée NORMAL. ActiveSupport :: Callbacks :: Callback est le premier endroit où Ruby s'attendait à trouver la constante dans le contexte actuel. –

+1

Je suggère fortement de mettre cette vérification dans une méthode protégée et de donner juste le nom de cette méthode (symbole) à ": if". De plus, vous devez marquer que votre réponse répond à votre question. – mislav

+0

Merci Mike et Mislav, oui, ça a l'air constant qui peut s'appeler NORMAL, c'est déroutant. Re: Mislav, je dois attendre 48 heures avant d'accepter ma propre réponse. –