2011-10-26 6 views
28

मैं निम्नलिखित कल्पना की है:कैसे Capybara + सेलेनियम के साथ प्रतिक्रिया कोड का परीक्षण करने के

it "deletes post", :js => true do 
... 
... 
page.status_code.should = '404' 

end 

page.status_code लाइन मुझे इस त्रुटि दे रहा है:

Capybara::NotSupportedByDriverError 

मैं कैसे पृष्ठ की स्थिति कोड जाँच करते हैं ?

+0

संबंधित: https://groups.google.com/forum/?fromgroups=#!topic/ruby-capybara/KdMvhjcjm8E – tokland

उत्तर

15

status_code वर्तमान में सेलेनियम ड्राइवर द्वारा समर्थित नहीं है। प्रतिक्रिया स्थिति कोड की जांच करने के लिए आपको एक अलग परीक्षण लिखना होगा।

3

या तो उस परीक्षण के लिए किसी अन्य ड्राइवर (जैसे rack-test) पर स्विच करें, या परीक्षण करें कि प्रदर्शित पृष्ठ 404 पृष्ठ है (एच 1 में सामग्री 'नहीं मिली' होनी चाहिए)।

जैसा कि @ यूजीन ने कहा, सेलेनियम स्टेटस कोड का समर्थन नहीं करता है।

40

एक तरफ के रूप में।

page.status_code.should == 404 

यह capybara-वेबकिट के साथ मेरे लिए काम किया यह पंक्ति

page.status_code.should = '404' 

होना चाहिए।

+0

एक और capybara-वेबकिट उपयोगकर्ता यहाँ है, लेकिन 'उम्मीद (page.status_code)। (200) 'रिटर्न 'Capybara :: NotSupportedByDriverError'। क्या आपको कोई विचार है क्यों? – scaryguy

2

सेलेनियम वेब चालक स्थिति_code को लागू नहीं करता है और सेलेनियम (डेवलपर की पसंद) के साथ प्रतिक्रिया_code का परीक्षण करने का कोई सीधा तरीका नहीं है।

<html code="<%= response.try(:code) if defined?(response) %>">[...]</html> 

और फिर अपने परीक्षण में:

def no_error? 
    response_code = page.first('html')[:code] 
    assert (response_code == '200'), "Response code should be 200 : got #{response_code}" 
end 
3

इसे आजमाएं

expect(page).to have_http_status(200) 
+5

हाय अजय; आपका कोड सही हो सकता है, लेकिन कुछ संदर्भ के साथ यह एक बेहतर जवाब देगा; उदाहरण के लिए, आप समझा सकते हैं कि कैसे और क्यों प्रस्तावित परिवर्तन प्रश्नकर्ता की समस्या का समाधान करेगा, शायद प्रासंगिक दस्तावेज के लिंक सहित। इससे उन्हें और अधिक उपयोगी बना दिया जाएगा, और अन्य साइट पाठकों के लिए भी अधिक उपयोगी होगा जो समान समस्याओं के समाधान की तलाश में हैं। –

1

उपयोग

यह परीक्षण करने के लिए मैं अपने लेआउट/application.html.erb में जोड़ा जेएस अनुरोध करने और नीचे की स्थिति प्राप्त करने के लिए:

अधिक जानकारी के लिए

चेक https://gist.github.com/yovasx2/1c767114f2e003474a546c89ab4f90db