2011-09-12 12 views
7

रेल एकीकरण परीक्षण में, मैं सत्र चर (मेरे उपयोगकर्ता में user_id) कैसे सेट करूं?रेल एकीकरण परीक्षणों में सत्र चर सेट करने के लिए कैसे करें

जाहिर है कि यह पूर्ण एकीकरण परीक्षण नहीं है, लेकिन यह देखते हुए कि मेरे ऐप में उपयोगकर्ता प्रमाणीकरण मैन्युअल उपयोगकर्ता इंटरैक्शन के बिना नहीं हो सकता है, क्या मैं किसी भी तरह से काम कर सकता हूं और मैन्युअल रूप से सत्र चर सेट कर सकता हूं?

ने निम्न कोशिश की है: "सत्र" उस दायरे में उपलब्ध नहीं है, open_session एक सत्र देता है जिसे मुझे अपडेट करने का कोई तरीका नहीं मिला।

उत्तर

1

मैन्युअल बातचीत के बिना प्रमाणीकरण क्यों नहीं हो सकता है? क्या यह कैप्चा का उपयोग करता है? यदि ऐसा है, तो परीक्षण वातावरण में चलने के लिए उस भाग को दबाएं।

+0

यह ट्विटर या फेसबुक के खिलाफ है। – jbasko

+0

क्या इससे मदद मिलती है? http://stackoverflow.com/questions/5331045/testing-a-web-applications-facebook-integration-with-cucumber –

5

जहाँ तक मैं कह सकता हूं, आप नहीं कर सकते। एकीकरण परीक्षणों में सत्र मान (रेल 3.2.2 में) एक प्रति है। (रेल देवता: अगर मैं गलत हूं तो कृपया मुझे सही करें।) आप मान सेट कर सकते हैं, लेकिन यह अगले 12/ को प्राप्त/प्रभावित नहीं करेगा क्योंकि यह वास्तविक सत्र की स्थानीय प्रति है। जोर परीक्षण के लिए बढ़िया, एकीकरण परीक्षण के दौरान सत्र में राज्य को रखने के लिए इतना अच्छा नहीं है।

मेरे पास एवरग्रीन के माध्यम से मेरे जावास्क्रिप्ट परीक्षण का समर्थन करने के लिए एक परीक्षण नियंत्रक है।

मेरा समाधान मेरे परीक्षण नियंत्रक के लिए एक विधि जोड़ने और पर उपलब्ध एक मार्ग था जब मैं उत्पादन में नहीं हूं, जो मुझे सत्र मान सेट करने की अनुमति देता है।

मूल रूप से मेरी app_test # set_session विधि एक उपसर्ग के लिए पैरामीटर नाम स्क्रीन, यदि उपसर्ग पाया जाता है, तो उपसर्ग छीन पैरामीटर नाम के लिए सत्र का मूल्य निर्धारित है। कुछ की तरह:

prefix = "set_session_" 
    post("/set_session.html", { (prefix + "user_id") => "My Name Is Mudd" }) 

के रूप में के रूप में "सत्र सुंदर नहीं:

params.each() do |key, value| 
      next if (key !~ /^set_session_/) 
      session[ key.slice(("set_session_".size())..-1).to_sym ] = value 
    end 
    # don't forget to render something/anything 

तो, अपने एकीकरण परीक्षण के दौरान सत्र चर सेट करने के लिए, मैं एक छोटे से की तरह कोड का हिस्सा है [: user_id] = ' माई नेम इज मूड 'है, लेकिन यह काम करता है। मेरा अगला पोस्ट/प्राप्त सत्र [: user_id] वांछित मूल्य के साथ सेट करेगा।

यह आसानी से पूर्णांक, प्रतीकों, आदि को पारित करने के लिए बढ़ाया जाता है, और निश्चित रूप से, एकाधिक सत्र कुंजी/मूल्य जोड़े एक बार में सेट किए जा सकते हैं। सुंदर नहीं है, लेकिन खराब नहीं है।

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