10

निम्नलिखित एकीकरण परीक्षण पर विचार करें:रेल एकीकरण परीक्षण से सत्र तक कैसे पहुंचे?

test "if there is no user in session, redirect to index and flash message" do 
    open_session do |sess| 
    post '/login', :email => users(:client).email, :password => 'rumpelstiltskin' 
    sess[:user] = nil 
    get '/user_page' 
    assert_redirected_to index_path 
    assert_equal "Your session has expired. Please log in again", flash[:notice] 
    end  
end 

यह त्रुटि उत्पन्न करता है: undefined method '[]='

और, sess.session[:user] = nil के लिए बदल के साथ-साथ एक त्रुटि उत्पन्न करता है: NoMethodError: undefined method 'session' for nil:NilClass

कैसे आप एक एकीकरण से सत्र पैरामीटर संपादित कर सकता रेल में परीक्षण?

रेल 3.0.7, रूबी 1.9.2p180, यूनिट परीक्षण ढांचे में काम करना।

संपादित करें:
get '/user_page', nil, {:user => nil} और get ('/user_page', nil, {:user => nil}) त्रुटियों उत्पन्न करते हैं।

+0

क्या यह इकाई परीक्षण या एकीकरण परीक्षण है? :) – Rimian

उत्तर

2

बस open_session ब्लॉक

+1

'सत्र [: उपयोगकर्ता] = nil' अद्यतन सत्र को नियंत्रक को पास नहीं करता है। –

+0

यह रेल 2 में काम करता है, लेकिन रेल 3 नहीं है (जो कि प्रश्न में इस्तेमाल किया जा रहा संस्करण है)। –

+0

न्यूनतम और रेल के साथ मेरे लिए ठीक काम करता है 3.1 – NARKOZ

2

ऐसा लगता है कि यह ऐसा करना संभव प्रतीत नहीं होता बिना session[:user] का उपयोग करें।

+0

@NARKOZ का उत्तर रेल के साथ ठीक काम करता है 3 – pahnin

3

रेल में 3.2.3 निम्नलिखित मेरे लिए काम करने लगता है:

# Hit the root_path to start our session 
get root_path 

# A helper method to set our session 
login_as(@user_fixture) 

# Now we can access the session variable 
assert session[:user_id] 

सुनिश्चित नहीं हैं कि अगर यह आप के लिए काम करेंगे, तो गुडलक!

-1

यह नहीं है कि एकीकरण परीक्षण के लिए डिज़ाइन किया गया है। आपको सत्र को सीधे संशोधित नहीं करना चाहिए, इसके बजाय आपको अपना/लॉगआउट पथ मारा जाना चाहिए।

+2

हां, लेकिन सवाल 'सत्र' तक पहुंचने के बारे में है। –

+0

@ बोरीसस्टिटनी - हाँ, और मैंने कहा कि सत्र तक नहीं पहुंचें, यह गलत है। मैंने यह 2 साल पहले लिखा था, लेकिन मुझे लगता है कि मैं अभी भी इसके साथ खड़ा हूं। – superluminary

संबंधित मुद्दे