2011-04-25 3 views
0

Je teste mes employees_controller, et dans mon test d'index pour les utilisateurs connectés, une erreur semble liée à mes relations de modèle.Erreur Rspec - relation entre l'utilisateur actuel et un autre modèle

Le test est la suivante:

describe "for signed-in user" do 
    before(:each) do 
    @user = test_sign_in(Factory(:user)) 
    end 

    it "should have the right title" do 
    get :index 
    response.should have_selector('title', :content => "Employee List") 
    end 

Je render_views ensemble. J'ai également chaque utilisateur lié à un emplacement, et l'affichage de l'index des employés est censé montrer les employés pour l'emplacement de l'utilisateur. Et à mon avis d'index, j'ai le code suivant pour afficher le nom de l'emplacement des employés:

<h1>Listing employees for <%= current_user.location.name %> </h1> 

Quand je lance mon test, je reçois un message d'erreur qui contient « ActionView :: Template :: Erreur: nom de la méthode undefined pour nil: NilClass "

Dans mon fichier factories.rb, j'ai défini l'ID de l'emplacement de l'utilisateur sur un ID valide. Pourquoi current_user.location retourne-t-il zéro? Qu'est-ce qui me manque dans le test? Je vous remercie!

Répondre

2

Très probablement, c'est juste que le processus de connexion n'est pas correct. C'est comme ça que je le fais. J'ai un /spec/support/controller_macros.rb et à l'intérieur:

module ControllerMacros 
    def login_user 
    before(:each) do 
     @request.env["devise.mapping"] = :user 
     @user = Factory(:user) 
     sign_in @user 
    end 
    end 
end 

Maintenant, dans mes spécifications du contrôleur:

describe AbilitiesController do 
    login_user 

    describe "POST 'train' ..." do 
    ... 
    end 
... 
+0

J'ai eu une macro de connexion dans un fichier d'aide de spécifications. Dans votre macro login_user, qu'est-ce que @ request.env ["concevoir.mapping"] =: utilisateur? – NicSlim

+0

Je ne sais pas vraiment ce que ça fait (et je m'en soucie vraiment), mais c'est comme ça que le wiki officiel de l'idéologie l'utilise. – Spyros

Questions connexes