8

मैं एक वेब पेज के लिए एक अनुरोध spec लिखने की कोशिश कर रहा हूँ।Capybara webkit अमान्य प्रतिक्रिया त्रुटि, डीबग कैसे करें?

यह पृष्ठ बिना किसी त्रुटि के विकास में काम करता है।

लेकिन capybara वेबकिट मैं प्रपत्र प्रस्तुत करने के लिए प्रयास करने के बाद यह त्रुटि प्राप्त में चल रहे:

Failure/Error: Unable to find matching line from backtrace 
Capybara::Driver::Webkit::WebkitInvalidResponseError: 
    Unable to load URL: https://127.0.0.1:33416/sign_in 

क्योंकि मैं पृष्ठ पर मार्कअप और जावास्क्रिप्ट बाहर अलग करना शुरू कर दिया है यह पता लगाने के प्रयास में। उस बिंदु पर जहां यह एक सादा सबमिट बटन के साथ एक खाली रूप है। मुझे अभी भी उपरोक्त त्रुटि मिलती है!

परीक्षण अब सचमुच है:

it "should be able create a new foo", :js, :focus do 
    visit new_foo_path 
    find('#submit').click 
end 

यह परीक्षण हालांकि काम करता है अगर मैं निकालें: js विकल्प:

it "should be able create a new foo", :focus do 
    visit new_foo_path 
    find('#submit').click 
end 

जावास्क्रिप्ट परीक्षण इस आवेदन पर अन्य पृष्ठों में काम करते हैं ...

यह मुझे कोई समझ नहीं आता है। क्या किसी के पास कोई सुझाव है कि यहां से डीबग कैसे करें?

किसी भी मदद

उत्तर

6

त्रुटि आप देख रहे हैं के लिए धन्यवाद कह पेज में अपवाद के कुछ प्रकार है कि वहाँ की सबसे अधिक संभावना capybara-वेबकिट के गुप्त तरीका है। मेरे पास the same problem कुछ समय पहले था, और "URL लोड करने में असमर्थ" चीज़ ने मुझे पूरी तरह से फेंक दिया, जिससे वास्तविक समस्या को ढूंढना मुश्किल हो गया।

कुछ चीजें कोशिश करने के लिए के रूप में, मैं सुझाव चाहते हैं:

  • सुनिश्चित करें कि आप स्थापित capybara-वेबकिट के नवीनतम संस्करण है।
  • वास्तविक रूप के अलावा परीक्षण के तत्वों की जांच करें, उदा। नियंत्रक तर्क और शामिल किसी भी मॉडल। जब तक आपके पास कुछ भी नहीं है तब तक सब कुछ पट्टी करें।
  • इस मुद्दे पर discussion देखें और वहां से लीड का पालन करें। मुझे पूरा यकीन है कि यह वही समस्या है या संबंधित है।

शुभकामनाएं!

+0

धन्यवाद ... बिल्कुल मेरे मामले में सेलेनियम के साथ बिल्कुल कुछ नहीं था! –

+0

समस्या यह थी कि मैं अपने अनुप्रयोग_ नियंत्रक में एसएसएल को मजबूर कर रहा था, परीक्षण वातावरण के लिए कोई बहिष्करण नहीं –

19

अपनी कैपिबरा कॉन्फ़िगरेशन में निम्न जोड़ें।

require 'rack/utils' 
Capybara.app = Rack::ShowExceptions.new(NameOfYourRailsApp::Application) 

जब आप अब कोई त्रुटि मिलती है आप stdout पर यह देखेंगे और रैक पर्यावरण (कुकीज़ आदि) और पश्व-अनुरेखन के बारे में विवरण के साथ एक पृष्ठ प्रदर्शित करेगा।

+1

बहुत बहुत धन्यवाद! यह बहुत अच्छा काम करता है! –

+0

मैं इसके लिए * हमेशा के लिए * की तरह दिख रहा हूं। मुझे वीसीआर रिकॉर्डिंग त्रुटियां थीं जो कहीं भी दिखाई नहीं दे रही थीं, इसलिए मुझे नहीं पता था कि क्या हो रहा था। अब मैं समस्या देख सकता हूँ। धन्यवाद! – mmrobins

+2

यह स्वीकार्य उत्तर होना चाहिए (मेरा जवाब केवल कुछ सुझाव था, यह वास्तव में समस्या हल करता है)। –

2

मैं उप डोमेन के साथ काम कर रहा हूँ और मैं इसे जोड़ने के लिए काम कर सकता है spec_helper.rb के लिए निम्न:

Capybara.configure do |config| 
    config.javascript_driver = :webkit 
    config.server_port = 3000 
    config.app_host = "http://subdomain.local.host:3000" 
end 

जाहिर है मेरी /etc/hosts फाइल करने के लिए 127.0.0.1 subdomain.local.host से पहले जोड़ने

2

मैं ने वही समस्या थी और करने में सक्षम था :js सक्षम परीक्षणों के लिए page.driver.browser.ignore_ssl_errors सक्षम करके इसे ठीक करें।यहां कोड है जो मेरे लिए काम करता है:

config.before(:each) do 
    if Capybara.current_driver == :webkit 
     # Need to manually specify ignoring of SSL errors 
     page.driver.browser.ignore_ssl_errors 
    end 
end 
संबंधित मुद्दे