2010-11-25 12 views
2

Je commence par Rails et je suis actuellement bloqué sur les tests d'intégration des contrôleurs.validation des variables assignées par le contrôleur dans les tests d'intégration des rails

J'essaie de valider que si certaines valeurs sont fournies par un utilisateur dans un formulaire, l'enregistrement actif génère des erreurs et ces erreurs sont transmises à une vue. Mon problème est que je ne sais pas comment accéder aux variables affectées par le contrôleur (par exemple - @user) dans les tests d'intégration. Comme je l'ai lu dans http://guides.rubyonrails.org/testing.html#what-to-include-in-your-functional-tests je peux accéder à des variables telles que @controller, @request, @response mais je m'attendais aussi à ce que je puisse facilement accéder aux variables assignées par le contrôleur.

Malheureusement, les choses telles que: * @user * @ controller.user

ne fonctionnent vraiment pas: -/

+0

Pouvez-vous nous montrer une partie de votre code? – rwilliams

Répondre

10

Vous pouvez accéder à ces variables à l'aide assigns méthode avec le symbole de nom variable en péramètre. Dans l'exemple:

assigns(:user) 

Vous donne la valeur de @user à partir de votre contrôleur.

+0

si simple, merci :-) –

3

Si vous souhaitez vérifier qu'une certaine variable a été affectée à vos tests, vous pouvez utiliser l'instruction suivante dans votre test. Cela vérifiera si votre variable @user dans le contrôleur a une certaine valeur ou not.If @user a une valeur en elle le test passera sinon il échouera

assert_not_nil assigns(:user) 

Et puis vous pouvez exécuter la commande suivante passez votre test dans le terminal

ruby -I test test/integration/your_test_file_name.rb -n test_name