Rspec tester si une variable de session a été mis dans une action de contrôleur
J'ai un rspec test de postes de à une action. Dans l'action, une variable de session est établi définitivement, cependant dans mon test du contrôleur, la session de hachage est vide. Comment puis-je vérifier dans un Rspec test pour voir si le contrôleur de définir la variable de session à la droite de la valeur?
Alors, quelle est la cause réelle de cette? (depuis que vous avez coché la réponse, mais n'a pas vraiment l'expliquer)
La réponse était correcte pour la question que j'avais posée, mais mon problème a fini par être à l'onu à ma question
La réponse était correcte pour la question que j'avais posée, mais mon problème a fini par être à l'onu à ma question
OriginalL'auteur chris | 2013-05-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez accéder à la session directement dans rspec comme ceci:
session[:key]
. Juste de la comparer avec la valeur que vous souhaitez.Je l'ai fait de nombreuses fois, donc je sais que ça fonctionne. Veuillez coller le code si nécessaire.
OriginalL'auteur Billy Chan
Voir cette. Le principal problème est que la variable
session
n'est pas accessible depuis le code de test. Pour résoudre ce problème, ajoutez le fusil de chasse lignes àspec/spec_helper.rb
:OriginalL'auteur Eduardo Santana
Utilisez-vous des
before_filter
dans votre contrôleur? Cela pourrait être le cas, sibefore_filter
les modifications de l'écoulement, et de votre code avec l'affectation d'une variable à la session n'a pas encore évalué.Par exemple, vous pouvez avoir cette ligne dans votre contrôleur:
Cela signifie que si vous n'êtes pas connecté, vous ne serez jamais entrer n'importe quelle méthode de ce contrôleur. Ainsi, le
session
variable est vide.OriginalL'auteur RunFor