2011-11-07 23 views
9

Denetleyicileri Rspec kullanarak test ediyorum ve yolu denetlemeden önce geçerli denetleyicinin oturum değişkenini test altında göremiyorum. Örneğin bu işleri:Rspec 2.7 istekte bulunmadan önce özel olarak erişim denetleyicisi oturumu

 describe "GET /controller/path" do 
     it "if not matching CRSF should display message" do 
      request.session[:state] = "12334" 
      get controller_path 
     end 
     end 

Herhangi bir fikir:

describe "GET /controller/path" do 
    it "if not matching CRSF should display message" do 
     get controller_path 

     request.session[:state] = "12334" 
    end 
    end 

Bu (i oturumu Nil sınıfının bir yöntem değildir söyleyerek bir hata alıyorum) çalışmıyor?

cevap

6

bu deneyin:

describe "GET /controller/path" do 
    it "if not matching CRSF should display message" do 
     session[:state] = "12334" 
     get controller_path 
    end 
    end 
9

RSpec yeni sürümü ile bu çok güzel yapılır, bak:

describe SessionController do 
    # routes are mapped as: 
    # match 'login' => 'session#create' 
    # get 'logout' => 'session#destroy' 

    describe "#create" do 
    context "with valid credentials" do 
     let :credentials do 
     { :email => '[email protected]', :password => 'secret' } 
     end 

     let :user do 
     FactoryGirl.create(:user, credentials) 
     end 

     before :each do 
     post '/login', credentials 
     end 

     it "creates a user session" do 
     session[:user_id].should == user.id 
     end 
    end 

    # ... 
    end 

    describe "#destroy" do 
    context "when user logged in" do 
     before :each do 
     get "/logout", {}, { :user_id => 123 } # the first hash is params, second is session 
     end 

     it "destroys user session" do 
     session[:user_id].should be_nil 
     end 

     # ... 
    end 
    end 
end 

Ayrıca sadece request.session[:user_id] = 123before(:each) içindeki bloğu kullanır, ancak yukarıda oldukça hoş görünüyor olabilir.

+1

o 2016 de çalışması gerekir) bir hata var bu çeki o kullanıcının kimliğini doğrulamak gerekir 'de bekliyorsunuz (session? [: User_id].) (User.id) ucunu eq için –