2011-03-29 11 views
19

सहायक विधिRspec: एक सहायक की परीक्षा में कुकी सेट करने

# Determine if this is user's first time 
    def first_time? 
    cookies[:first_time].nil? 
    end 

का प्रयास किया गया Rspec परीक्षण

it "returns true if the cookie is set" do 
    cookies[:first_time] = "something" 
    helper.first_time?().should be(true) 
end 

त्रुटि:

undefined method `cookies' for nil:NilClass 

सब कुछ मैं Rspec और कुकीज़ के बारे में पढ़ा है के लिए है नियंत्रक के साथ करो। रुपेक सहायक परीक्षण में कुकीज़ प्राप्त करने/सेट करने का कोई तरीका?

(Rspec/Rspec-रेल 2.5, रेल 3.0.4)

धन्यवाद !!

अद्यतन:

मिले कैसे कुकी सेट करने पर एक जवाब है, तो मैं इसे यहाँ के अन्य संदर्भ के लिए छोड़ देंगे।

टुकड़ा मैं खोज रहा था:

helper.request.cookies[:awesome] = "something" 

फिर भी कैसे कुकीज़ प्राप्त करने के लिए नहीं पता ...

+0

बस उत्सुक, तुम क्यों कुकीज़ प्राप्त करना चाहते हैं? चश्मा में आप हमेशा कुकीज़ सेट करते हैं, इसलिए आप जानते हैं कि वे क्या हैं। क्या आप सिर्फ यह जांचना नहीं चाहते कि आपका ऐप एक निश्चित तरीके से कुकीज़ के साथ एक निश्चित तरीके से व्यवहार करता है? – radixhound

+0

जीईटी सिर्फ 'helper.request.cookies [: भयानक] ' –

उत्तर

17

सबसे अच्छा विवरण मैं ढूँढने में सक्षम किया गया है यहाँ है: https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs/cookies

उद्धरित:

Recommended guidelines for rails-3.0.0 to 3.1.0

  • Access cookies through the request and response objects in the spec.
  • Use request.cookies before the action to set up state.
  • Use response.cookies after the action to specify outcomes.
  • Use the cookies object in the controller action.
  • Use String keys.

उदाहरण:

# spec 
request.cookies['foo'] = 'bar' 
get :some_action 
response.cookies['foo'].should eq('modified bar') 

# controller 
def some_action 
    cookies['foo'] = "modified #{cookies['foo']}" 
end 
+0

यह भी ध्यान दें कि यदि आप 'कुकीज़ [: foo] = true' जैसे प्रतीकों के साथ कुकीज़ सेट करते हैं तो आपके पास कुंजी होगी और स्ट्रिंग 'कुकीज़ [' foo '] =' true'' में परिवर्तित मूल्य – Calin

0

आप कुकीज़ उसी तरह आप उन्हें सेट मिलता है। मेरी ऐनक में से एक से उदाहरण:

request.cookies[:email].should be nil 
+1

अजीब है। अगर मैं इसे अपने सहायक स्पेस में रखता हूं, तो मुझे "अनिर्धारित स्थानीय चर या विधि 'अनुरोध' मिलता है। अगर मैं इसे हेल्पर में बदलता हूं। अनुरोध मुझे शून्य मिलता है (हालांकि यह ठीक से काम करता है और कोड ठोस है)। अरे। – jmccartie

+0

यहां मैं जिस spec को चलाने की कोशिश कर रहा हूं और उसके परिणाम: https://gist.github.com/897722 – jmccartie

2

मैं बस आपके प्रश्न पर ठोकर खाई (मैं एक जवाब की तलाश में था)। मैं सफलतापूर्वक इस की कोशिश की:

helper.request.cookies[:foo] = "bar" 
0

एक नियंत्रक परीक्षण इस काम करता है में:

@request.cookies[:cookie_name] = "cookie_value" 
एक में ब्लॉक से पहले

मैंने पाया इस here

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