Rails, de détente, d'Authentification & RSpec - Comment faire pour tester les nouveaux modèles qui nécessitent une authentification
J'ai créé une application de formation en ligne à l'aide de Bort, qui est une base app qui inclut Reposant Authentification et RSpec. Je l'ai et en cours d'exécution et ajout d'un nouvel objet, exige que l'utilisateur soit connecté avant de pouvoir faire quoi que ce soit(before_filter :login_required
dans le contrôleur). [edit: je devrais aussi mentionner que l'utilisateur has_many
de la nouvelle classe et seul l'utilisateur devrait être capable de le voir.]
J'ai créé le nouveau modèle/contrôleur à l'aide de Rspec générateurs qui ont créé un certain nombre de tests par défaut. Ils passent tous si il n'y a pas de before_filter
mais plusieurs échec, comme ce devrait être prévu, une fois le before_filter
est en place.
Comment puis-je obtenir les tests générés à courir comme s'il n'y est/n'est pas un utilisateur connecté? Ai-je besoin d'un lot de correspondant non connecté - rediriger les tests? Je suppose que c'est une sorte de moquerie ou de montage technique, mais je suis de nouveau à RSpec et un peu à la dérive. Bon RSpec tutoriel liens serait également appréciée.
Vous devez vous connecter pour publier un commentaire.
J'ai une très similaires de l'installation, et ci-dessous le code que j'utilise actuellement pour tester ce genre de choses. Dans chacun des
describe
s j'ai mis dans:Si vous avez besoin d'une connexion, ou
Si vous avez besoin de la propriété. Évidemment, les méthodes d'aide à changer (très peu) avec chacune leur tour, mais ce n'est la plupart du travail pour vous. C'est à mon spec_helper.rb.rb
Quand ne pas tester l'authentification mais les tests les contrôleurs qui ont des besoins de l'utilisateur soit authentifié j'ai l'habitude de talon de la méthode de filtrage:
L'exemple ci-dessus fonctionne, où mon before_filter est fixé à la méthode d'authentification:
et de l'authentifier dans mon appli utilise l'Authentification HTTP de Base, mais il peut vraiment être tout autre mécanisme d'authentification.
Je pense que c'est une jolie façon simple de tester.
J'ai trouvé quelques réponses à ma propre question. En gros, j'ai besoin de comprendre comment, à se moquer de l'utilisateur à partir de
restful_authentication
de sorte que le générés automatiquement rspec contrôleur de tests pourrait passer, même si j'avais ajoutébefore_filter: login_required
.Ici sont quelques-uns de mes viens de trouver des ressources:
RSpec: Il Devrait Se Comporter Comme
rspec, restful_authentication, et login_required
à l'aide de restful_authentication current_user à l'intérieur de contrôleur spécifications
Le séchage de votre contrôleur CRUD RSpecs
De se moquer d'un utilisateur connecté, j'ai pirater le contrôleur pour définir
@current_user
manuellement: