Ce que j'accomplis est d'utiliser (compter sur) la méthode current_user
tout en définissant les étapes du concombre. J'utilise Clearance dans mon projet. Tout d'abord j'ai essayé d'utiliser sign_in
mais cela n'a pas fonctionné (je suppose que Cucumber World ne connaît pas les méthodes de Clearance ...). Comment puis-je faire reconnaître Cuckes current_user
et sign_in
/sign_out
?Concombre et dégagement: current_user par étapes
Répondre
Vos fonctions de concombre devraient piloter votre application via l'interface utilisateur publique. Quelque chose comme:
Given /^I am signed in as "([^\"]*)"%/ do |username|
visit 'sign_in'
fill_in 'Username', :with => username
click 'Sign In'
end
Puisque la méthode current_user
est pas disponible pour le navigateur, vous ne devriez pas l'utiliser dans vos spécifications.
Vous pourriez faire semblant dans vos étapes en stockant @current_user
dans l'étape ci-dessus, puis en fournissant un lecteur d'attributs pour cela.
Je ne suis pas d'accord avec l'idée que chaque test d'acceptation (concombre ou autre) doit exercer la logique de connexion. Heureusement, si vous êtes d'accord, Clearance a ajouté un back door dans les tests qui vous permettent d'ignorer les étapes de connexion.
user = create(:user)
visit posts_path(as: user)
Maintenant, vous pouvez laisser vos fonctions liées à connexion au volant de l'interface de connexion comme un utilisateur et ignorer que des fonctionnalités qui ne sont pas directement liées à l'exploitation forestière dans.
Merci beaucoup! – kwerle
Après 9 mois, je compris comment cucke c'est vrai. Maintenant, comprenez pourquoi votre réponse était correcte dans un jour. – gmile
C'est quand même frustrant. Parce que 'current_user' est' nil' même du côté serveur, pas seulement du côté du navigateur. –