रैक :: टेस्ट एक कुकी जार रखता है जो अनुरोधों पर बनी रहती है। आप इसे rack_mock_session.cookies
के साथ एक्सेस कर सकते हैं।
it 'defines a cookie' do
get '/'
rack_mock_session.cookie_jar["foo"].should == "bar"
end
तुम भी last_request.cookies
साथ कुकी तक पहुंच सकता है, लेकिन जैसा कि नाम से कहते हैं, यह शामिल हैं:
get '/cookie/set' do
response.set_cookie "foo", :value => "bar"
end
अब आप यह कुछ इस तरह से परीक्षण कर सकते हैं: मान लीजिए कि आप इस तरह की एक हैंडलर करते हैं अंतिम अनुरोध के लिए कुकीज़, प्रतिक्रिया नहीं। आप set_cookie
के साथ कुकीज़ सेट कर सकते हैं और उन्हें clear_cookies
से साफ़ कर सकते हैं।
it 'shows how to set a cookie' do
clear_cookies
set_cookie "foo=quux"
get '/'
last_request.cookies.should == {"foo" => "quux"}
end
अद्यतन: आप कुकी जार परीक्षण मामलों (it
ब्लॉक) में कायम रखना चाहते हैं, तो आप किसी भी परीक्षण के मामले निष्पादित करने से पहले रैक सत्र प्रारंभ करने की जरूरत है। ऐसा करने के लिए, अपने हुक को अपने describe
ब्लॉक में जोड़ें।
before :all do
clear_cookies
end
वैकल्पिक, आप उदाहरण के लिए प्रत्येक अनुरोध से पहले आवश्यक कुकी स्थापित करने के लिए before :each
इस्तेमाल कर सकते हैं।
ठीक है, अब मुझे लगता है कि कुकी ठीक से सेट है, लेकिन जब मैं रूट करने का अनुरोध करता हूं जिसके लिए वैध कुकी की आवश्यकता होती है - मुझे त्रुटि मिली। (यदि कुकी सेट या गलत नहीं है तो सर्वर 401 त्रुटि देता है) – Andoriyu
UPD। rack_mock_session.cookie_jar ["foo"] केवल एक पोस्ट में खाली नहीं है, अगले परीक्षण पर यह खाली है। – Andoriyu
यूपीडी। वैश्विक var में कुकी संग्रहीत करके चारों ओर काम किया, इसलिए प्रत्येक अनुरोध से पहले मैंने कुकी सेट की। – Andoriyu