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 null
  • User.find(session[:user_id]) gibt Sie den richtigen Benutzer
InformationsquelleAutor user3726033 | 2014-06-23
Schreibe einen Kommentar