2012-11-06 4 views
12

मेरे रेल आवेदन में, मेरे पास ककड़ी स्वीकृति परीक्षण का एक सेट है जो मेरे आवेदन के विभिन्न पृष्ठों का परीक्षण करता है। ककड़ी के साथ, @javascript के साथ एक विशिष्ट परीक्षण (परिदृश्य) को टैग करने से उस परिदृश्य को एक साधारण ड्राइवर के बजाय जावास्क्रिप्ट ड्राइवर का उपयोग करके चलाने के लिए कारण होता है जो जावास्क्रिप्ट का समर्थन नहीं करता है।कैपिबरा के साथ, मैं कैसे बता सकता हूं कि वर्तमान में उपयोग किया जा रहा ड्राइवर क्या जावास्क्रिप्ट का समर्थन करता है?

क्या मेरे परीक्षणों के लिए यह निर्धारित करने का कोई आसान तरीका है कि वे वर्तमान में ऐसे ड्राइवर के साथ चल रहे हैं जो जावास्क्रिप्ट का समर्थन करता है या ऐसा नहीं करता है? मुझे यह चाहिए कि अगर वे जावास्क्रिप्ट सक्षम के साथ चल रहे हैं तो मैं अपने परीक्षण थोड़ा अलग तरीके से व्यवहार कर सकता हूं।

उत्तर

25

मामले में किसी को भी रुचि है, मैं documentation for Capybara पर एक दृष्टि डाली और एक अन्य संभव समाधान पाया:

if Capybara.current_driver == Capybara.javascript_driver 
    # Supports JavaScript 
else 
    # Doesn't support JavaScript 
end 
+0

अच्छा विचार - यह स्वीकार्य उत्तर होना चाहिए ... –

+0

ठीक है तो। मैं इसे स्वीकार किए गए उत्तर के रूप में सूचीबद्ध करने में संकोच कर रहा था क्योंकि मैं वह हूं जिसने प्रश्न और यह उत्तर दोनों पोस्ट किए हैं। लेकिन चूंकि आपको यह जवाब भी पसंद है, इसलिए मैं आगे बढ़ूंगा और इसे स्वीकार करूंगा। – Ajedi32

+1

यह ठीक है जब आपका जावास्क्रिप्ट_ड्राइवर (कहता है) poltergeist है, लेकिन आपका विशिष्ट उदाहरण वास्तव में सेलेनियम – steve

2

this answer से मेरे लिए लग रहा है यह करने के लिए सबसे आसान तरीका है की तरह एक Before हुक में एक उदाहरण चर सेट करने के लिए है:

Before('@javascript') do 
    @javascript = true 
end 

तो फिर तुम परीक्षण कर सकते हैं अगर एक परिदृश्य मूल्य की जाँच करके कदम परिभाषाओं में टैग है उस उदाहरण परिवर्तनीय:

When /^I go to the homepage$/ do 
    if @javascript 
    ... 
    else 
    ... 
    end 
end 

मैंने इसका परीक्षण किया है और ऐसा लगता है।

7

यह एक तरह से अप्रिय है, लेकिन यह है कि क्या मैं पर उतरा है। लगता है कि मैं कहीं एक सार से यह मिल गया, माफ करना मैं इसे के लिए लिंक खो दिया लेकिन कम से कम यह बहुत सीधा है:

def javascript_test? 
    [:selenium, :webkit, :chrome, :poltergeist].include?(Capybara.current_driver) 
end 

यदि आप परिभाषित करते हैं (या अपने Gemfile में आवश्यकता होती है) अन्य js सक्षम ड्राइवरों, आप होगा उन्हें इस सूची में जोड़ें।

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

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