Question

J'ai commencé à écrire des tests fonctionnels pour mes rails aujourd'hui app. J'utilise le plug-in d'authentification RESTful. Je suis tombé sur un couple de choses confus J'espère que quelqu'un peut me préciser.

1) J'ai écrit une fonction de connexion rapide parce que la plupart des fonctions dans mon application rails nécessitent une authentification.

def login_as(user)
   @request.session[:user_id] = user ? user.id : nil
end

La question que je vois avec cette fonction, est-il feint essentiellement authentification. Devrais-je être inquiet à ce sujet? Peut-être qu'il est correct d'emprunter cette voie aussi longtemps que je teste la vraie méthode d'authentification quelque part. Ou peut-être c'est terrible pratique.

2) La deuxième chose est source de confusion que dans certains endroits dans mes tests fonctionnels, j'ai besoin le processus d'authentification complet se produire. Quand un utilisateur activé, j'ai la méthode do_activate créer des objets initiaux pour l'utilisateur. Il est analogue à la création d'un objet portable blanc et objet stylo pour une application de l'étudiant, si cela a du sens.

Ainsi, afin de tester correctement mon application, je dois l'utilisateur de frapper cet état d'activation de sorte que ces objets sont créés. Je suis actuellement en utilisant Factory Girl pour créer l'utilisateur, puis d'appeler la fonction login_as ci-dessus pour l'authentification faux.

Je suppose une autre option serait de sauter la séquence complète d'authentification et il suffit de créer les objets en blanc avec Factory Girl. Je pourrais tester l'authentification correcte ailleurs.

Que pensez-vous? Si je devais passer par la séquence correcte, pourquoi pas le code ci-dessous invoquer la fonction do_activate?

user = Factory.create(:user)
user.active = 1
user.save

Merci!

Était-ce utile?

La solution

Faking il est parfaitement acceptable.

Cependant, écrire d'autres tests qui garantissent que les choses que vous voulez protéger sont protégés. Donc,

test "it should show the profile page" do
  user = Factory(:user)
  login_as(user)
  get :show, :id => user
  assert_response :success
end

test "it should not show the profile page cos I'm not logged in" do
  user = Factory(:user)
  get :show, :id => user
  assert_response :redirect
end

Ne hésitez pas à me frapper pour followups!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top