RSPEC: Stub a une méthode de contrôleur dans la vue
-
12-11-2019 - |
Question
Afficher les spécifications de la méthode des spécifications car la méthode ApplicationController, logged_in?
, veut que un utilisateur soit renvoyé.
Je ne sais pas comment spécifier cela. Actuellement en before(:each)
J'ai:
controller.stub!(:logged_in?).and_return(FactoryGirl.create(:active_user))
@ballots = FactoryGirl.create_list(:full_ballot, 2)
Ce qui ne fonctionne pas:
Failure/Error: render
ActionView::Template::Error:
undefined method 'logged_in?' for #<#<Class:0x007f9c908e4b10>:0x007f9c90873b68>
FWIW: :active_user
est l'usine d'utilisateurs pour l'utilisateur qui est attaché au :full_ballot
Mise à jour: Comme demandé:
class ApplicationController < ActionController::Base
...
def current_user
@current_user ||= User.find(cookies[:id_token]) if cookies[:id_token]
end
def logged_in?
current_user
end
...
end
La solution
Regarde comment concevoir les aides de test fais le. Il semble que vous puissiez définir cette méthode avant les tests et cela devrait fonctionner:
def logged_in?
FactoryGirl.create :active_user
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow