2013-05-01 4 views
9

में सेट किया गया था, तो मेरे पास एक rspec परीक्षण है जो किसी क्रिया को पोस्ट करता है। कार्रवाई में, एक सत्र चर निश्चित रूप से सेट किया गया है, हालांकि मेरे नियंत्रक परीक्षण में, सत्र हैश खाली है। यह देखने के लिए कि नियंत्रक सत्र चर को सही मान पर सेट करता है या नहीं, यह देखने के लिए मैं एक आरईपीसी परीक्षण में कैसे जांचूं?रुपेक टेस्ट यदि कोई सत्र चर नियंत्रक क्रिया

+0

तो इसका वास्तविक कारण क्या था? (चूंकि आपने एक जवाब चुना लेकिन वास्तव में समझाया नहीं गया) – lulalala

+0

उत्तर मुझसे पूछे गए प्रश्न के लिए सही था, लेकिन मेरी समस्या मेरे प्रश्न – chris

उत्तर

15

आप सीधे इस तरह के आरएसपीईसी में सत्र तक पहुंच सकते हैं: session[:key]। बस उस मूल्य की तुलना करें जो आप चाहते हैं।

+1

से संबंधित नहीं है, मुझे खेद है कि मुझे यह कहना चाहिए था कि मैंने क्या प्रयास किया है। मैंने कोशिश की, लेकिन सत्र खाली था। spec में एक खाली सत्र है लेकिन नियंत्रक का सामान्य तरीका उपयोग करते हुए, यह – chris

+1

@Chris काम करता है, मैंने इसे कई बार किया है, इसलिए मुझे पता है कि यह काम करता है। यदि आवश्यक हो तो कोड पेस्ट करें। –

0

क्या आप अपने नियंत्रक में before_filter का उपयोग करते हैं? यह मामला हो सकता है, अगर before_filter प्रवाह में परिवर्तन करता है, और सत्र में एक चर निर्दिष्ट करने के साथ आपका कोड भी मूल्यांकन नहीं किया गया है।

उदाहरण के लिए आप अपने नियंत्रक में इस लाइन हो सकता है:

# ... 
    before_filter :authenticate_user! 
# ... 

इसका मतलब है कि यदि आप साइन इन नहीं हैं, तो आप इस नियंत्रक में किसी भी विधि में प्रवेश कभी नहीं होगा। तो session चर खाली हो जाएगा।

3

this देखें। मुख्य समस्या यह है कि परिवर्तनीय session परीक्षण कोड से उपलब्ध नहीं है। इसे हल करने के लिए, spec/spec_helper.rb पर 0: 3

def session 
    last_request.env['rack.session'] 
end 
+0

यह संभवतः उत्तर दिया गया था जब मैंने इसे पोस्ट किया था। – chris

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