2016-08-23 7 views
6

मैं turbolinks-ios और रेल संस्करण का उपयोग कर आईओएस ऐप विकसित कर रहा हूं।रेल परीक्षण पर कस्टम उपयोगकर्ता एजेंट सेट करें

मेरे iOS एप्लिकेशन में, मैं कस्टम उपयोगकर्ता एजेंट iPadApp की स्थापना की और उस पर रेल application controllerrequest.user_agent.try(:index, 'iPadApp') उपयोग कर रहा है पता लगाने की स्थापना varianttablet करने के लिए (क्योंकि देखा गया foo.html+tablet.haml की तरह हैं) के लिए।

मेरा ऐप ठीक काम कर रहा है और अब मैं अपने ऐप के लिए फीचर टेस्ट लिखने की कोशिश कर रहा हूं लेकिन उपयोगकर्ता एजेंट को सही ढंग से सेट नहीं कर सकता। मैंने this पोस्ट की कोशिश की है जो वास्तव में stackoverflow है लेकिन मुझे लगता है कि यह सेट नहीं करता है (page.driver.browser.header(key, value)) request.params में क्वेरी पैरामीटर सेट करें।

मेरे नियंत्रक परीक्षण में मैं बस उपयोगकर्ता काम करने के लिए request.user_agent = 'iPadApp' का उपयोग करता हूं जो ठीक काम कर रहा है।

मैं परीक्षण अनुरोध को कैसे कॉन्फ़िगर कर सकता हूं ताकि मैं request.user_agent.try(:index, 'iPadApp') का उपयोग कर सकूं?

किसी भी प्रकार की सहायता के लिए धन्यवाद।

+0

कैपिबरा के साथ आप किस ड्राइवर का उपयोग कर रहे हैं? –

+0

@TomWalpole कोई स्पष्ट ड्राइवर नहीं दिया गया। तो मुझे लगता है कि यह डिफ़ॉल्ट ड्राइवर का उपयोग करता है। –

उत्तर

7

चूंकि आप ड्राइवर निर्दिष्ट नहीं कर रहे हैं Capybara rack_test का उपयोग करना चाहिए। rack_test ड्राइवर के साथ आप

page.driver.header('User-Agent', 'the user agent string you want') 

यही तो request.user_agent आपके आवेदन कोड में सुलभ बनाना चाहिए साथ visit कॉल करने से पहले उपयोगकर्ता एजेंट हेडर सेट कर सकते हैं, अपने परीक्षण कोड में,।

एक अलग समाधान अपने iPad परीक्षण

Capybara.register_driver(:ipad_rack_test) do |app| 
    Capybara::RackTest::Driver.new(app, :headers => { 'HTTP_USER_AGENT' => 'User agent string' }) 
end 

और के रूप में तो अपने ड्राइवर को निर्दिष्ट के लिए एक विशिष्ट चालक रजिस्टर होगा: ipad_rack_test

+0

आपका समाधान काम हालांकि मुझे पता चला कि 'page.driver.header' कॉल' page.driver.browser.header' (स्रोत कोड) [https://github.com/jnicklas/capybara/blob/master/lib/capybara/ rack_test/driver.rb]। मुझे नहीं पता कि आखिरी दिन उसने कोई काम क्यों नहीं किया (मैं बस अपना सर्वर पुनरारंभ करता हूं)। 'विज़िट' विधि के विकल्प के रूप में 'उपयोगकर्ता-एजेंट' को विशेषता के रूप में पास करने का कोई तरीका है? इसलिए, प्रत्येक विज़िट से पहले सेट हेडर की बजाय कोई भी इस विकल्प को पास कर सकता है। आपकी सहायता के लिए धन्यवाद. –

+0

बेशक मैं 'विज़िट' विधि को ओवरराइड कर सकता हूं जहां मैं 'विकल्प' पास करने के आधार पर 'हेडर' सेट कर सकता हूं। –

+0

कोई भी 'यात्रा' को ओवरराइड किए बिना यात्रा करने के लिए पास करने का कोई तरीका नहीं है। एक सरल/क्लीनर समाधान शायद पहले ब्लॉक में हेडर सेटिंग डालने के लिए होगा, इसलिए यह प्रत्येक टेस्ट (या विशिष्ट मेटाडाटा के साथ टैग किए जाने वाले परीक्षण) से पहले चलाया जाता है –

0

जब से मैं टिप्पणी या संपादित नहीं कर सकते हैं, मैं एक नया बनाने के लिए मजबूर किया गया था जवाब। यद्यपि उपर्युक्त सही है, शीर्ष पर जहां उसके पास page.driver.header('User-Agent', 'the user agent string you want') है, मुझे Capybara.page.driver.header('User-Agent', 'the user-agent string you want') का उपयोग करना पड़ा।

उम्मीद है कि इससे मदद मिलती है।

0

इस पर जोड़ने के लिए, यदि आप अपने सभी परीक्षण के लिए उपयोगकर्ता एजेंट सेट करना चाहते हैं। आप अपने spec_helper.rb कॉन्फ़िगरेशन सेक्शन (उदाहरण के रूप में क्रोम उपयोगकर्ता एजेंट) में ऐसा कुछ कर सकते हैं

config.before(:each) do 
    Capybara.page.driver.header('user-agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36.') 
end 
संबंधित मुद्दे