स्वीकृत उत्तर rack_session_access सुझाता है। यह सत्र स्थिति को संपादित और अद्यतन करने के लिए मिडलवेयर नियंत्रकों को सम्मिलित करके काम करता है, फिर कैपिबरा उस पृष्ठ पर जाता है और सत्र डेटा के साथ एक फॉर्म सबमिट करता है। बहुत सरल! लेकिन अगर आप वार्डन (सीधे या डेविस के माध्यम से) का उपयोग कर रहे हैं तो अनावश्यक।
वार्डन में एक हुक on_next_request है जो वार्डन तंत्र तक पहुंच प्रदान करता है, जिसे सीधे सत्र कुंजी सेट करने के लिए उपयोग किया जा सकता है। मैं इस एक साथ rspec में इसे बंडल करने फेंक दिया:
spec/support/inject_session.rb
बनाएँ:
RSpec.configure do |config|
config.include InjectSession, :type => :feature
end
फिर एक कल्पना में नमूना उपयोग हो सकता है:
module InjectSession
include Warden::Test::Helpers
def inject_session(hash)
Warden.on_next_request do |proxy|
hash.each do |key, value|
proxy.raw_session[key] = value
end
end
end
end
spec/spec_helper.rb
में सुविधा चश्मा में मॉड्यूल में शामिल हैं:
inject_session :magic => 'pixie dust', :color => 'pink'
visit shopping_cart_path
page.should be_all_sparkly_and_pink # or whatever
एकीकरण परीक्षण में, आपको लॉग इन फॉर्म से उपयोगकर्ताओं को लॉग इन करना चाहिए। – apneadiving
यह काम नहीं करेगा। मुख्य मुद्दा यह है कि मैं बाहरी प्रमाणीकरण प्रणाली का उपयोग कर रहा हूं: Shopify।तो Shopify एक विशिष्ट यूआरएल में एक सफल लॉग-इन वापस करने के लिए कॉन्फ़िगर किया गया है। समस्या देखें? वह यूआरएल लोकलहोस्ट नहीं हो सकता है। यही कारण है कि मुझे लॉग इन प्रक्रिया को नकली करने की आवश्यकता है, भले ही मैं एकीकरण परीक्षण – Nerian