2015-07-14 14 views
7

में अपरिभाषित स्थानीय चर या विधि 'सत्र' मैं रेल अनुप्रयोग पर रूबी बना रहा हूं, और यह देखने के लिए कि "मुझे याद रखें" सुविधा काम करता है या नहीं, मेरे उपयोगकर्ता मॉडल से जुड़े एक परीक्षण को चलाने का प्रयास कर रहा हूं। मैं कुकीज़ को स्टोर करने के लिए रेल के इनबिल्ट cookies हैश का उपयोग कर रहा हूं, और वर्तमान सत्र को स्टोर करने के लिए session हैश का उपयोग कर रहा हूं। मैंने विभिन्न परीक्षण (एकीकरण, मॉडल और नियंत्रक) चलाए हैं जहां मैं session चर का उपयोग करता हूं, लेकिन इस विशेष मामले में किसी कारण से इसे पहचाना नहीं जा रहा है।मॉडल परीक्षण

NameError: undefined local variable or method `session' for #<UserTest:0x0000000658b5c8> 

त्रुटि नीचे log_in_as विधि में else ब्लॉक में होता है:

test_helper.rb

... 

def log_in_as(user, options = {}) 
    password = options[:password] || 'password' 
    remember_me = options[:remember_me] || '1' 

    if integration_test? 
    post login_path, session: { email: user.email, password: password, remember_me: remember_me } 
    else 
    session[:user_id] = user.id 
    end 
end 

मैं अपने उपयोगकर्ता परीक्षण में log_in_as कहते हैं; इन दोनों परीक्षणों में असफल रहा।

user_test.rb

require 'test_helper' 
... 
test "login with remembering" do 
    log_in_as(@user, remember_me: '1') 
    assert_not_nil cookies['remember_token'] 
end 

test "login without remembering" do 
    log_in_as(@user, remember_me: '0') 
    assert_nil cookies['remember_token'] 
end 
... 

और जब मैं सहायक से कोड की है कि लाइन निकालने के लिए, एक त्रुटि कह रही है कि cookies मान्यता प्राप्त नहीं है फेंक दिया है। यहाँ क्या मुद्दा है?

+1

यह SO उत्तर देखें http://stackoverflow.com/questions/7216847/setting-a-session-variable-in-a-model। असल में, आपके पास सीधे अपने मॉडल में इन विशेष हैश तक पहुंच नहीं है। –

+0

क्या यह मामला भी एक परीक्षण में है? ये फ़ाइलें 'test/test_helper.rb' और 'test/models/user_test.rb' पर स्थित हैं। मेरे पास वास्तव में 'test_helper.rb' में सत्र के लिए अन्य कॉल हैं, इस उपयोगकर्ता की लॉग इन करने के लिए इस सहायक विधि की तरह: ' सत्र [: user_id] .nil? ' – sarangj

उत्तर

6

session हैश isn't available in models, only in controllers and views और नियंत्रक और परीक्षण देखें।

+0

आह, मैं देखता हूं, लेकिन यह कोड है परीक्षण सुइट में ... क्या वह अभी भी लागू होता है? साथ ही, मैंने 'test_helper.rb' फ़ाइल में सत्र हैश पर कॉल किया है। (मुख्य प्रश्न पर मेरी प्रतिक्रिया टिप्पणी देखें) – sarangj

+0

हां। उपलब्ध ** केवल ** नियंत्रकों और विचारों और नियंत्रक में और परीक्षण देखें। – p4sh4

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