Testen Rails-Controller mit Session
In meiner app habe ich eine session controller. Jetzt möchte ich zum testen der Benutzer-Steuerung, die ist nur zugänglich wenn man eingeloggt ist.
Mein problem ist wie kann ich fake die Sitzung. ich habe schon viel probiert so ich hoffe Ihr könnt mir jetzt helfen:
Den application-controller:
helper_method :current_user
def authenticate_user
current_user
if @current_user
return true
else
redirect_to(:controller => 'sessions', :action => 'new')
return false
end
end
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
Den Benutzer-Controller:
before_filter :authenticate_user
Den Controller Testen:
describe "GET index" do
it "assigns all users as @users" do
user = FactoryGirl.create(:user)
@request.session[:user_id] = user.id
get 'users'
expect(@users.size).to eq(1)
end
end
Ich habe auch versucht session[:user_id] = user.id
- und debugging (nach dem get-request):
- save_and_open_page lassen Sie mich sehen die login-Seite.
@current_user
ist immer nullUser.find(session[:user_id])
gibt Sie den richtigen Benutzer
- Als Referenz, dies ist nicht mehr möglich, in Schienen 5.
- Was tun Sie für Schienen 5 dann?
- Siehe meine Antwort hier: stackoverflow.com/questions/37796129/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
controller
statt@request
:Außerdem haben Sie
@users
variable test? Wahrscheinlich sollte esexpect(User.count).to eq(1)