2013-03-27 9 views
8

के खिलाफ काम करने के लिए ककड़ी/कैपिबरा/मशीनीकरण कैसे प्राप्त करें मैं Google App Script पर बीडीडी करने की कोशिश कर रहा हूं। मैं समझता हूं कि सिद्धांत रूप में मुझे गैर-रेल बाहरी साइट पर बीडीडी करने के लिए ककड़ी, कैपिबरा और मैकेनाइज के कुछ संयोजन का उपयोग करने में सक्षम होना चाहिए। इस मामले में मैं बनाई गई Google ऐप स्क्रिप्ट का परीक्षण करने का प्रयास कर रहा हूं।बाहरी गैर-रेल साइट

मैं इस परियोजना में पूरा कोड मिल गया है अब तक:

https://github.com/tansaku/GoogleAppScriptBDD

हालांकि मैं वर्तमान में इस त्रुटि पर अटक कर रहा हूँ:

rack-test requires a rack application, but none was given (ArgumentError) 

मुझे पता है कि मैं नहीं चाहता रैक का उपयोग करने के लिए, और मैं फ़ोरम और स्टैक ओवरफ़्लो खोज रहा हूं, और अब तक मेरा सबसे अच्छा अनुमान है कि यह मेरी ककड़ी env फ़ाइल में कुछ है:

require 'capybara/cucumber' 
Capybara.run_server=false 
Capybara.current_driver = :mechanize 
Capybara.app_host = 'https://script.google.com/macros/s/AKfycbytA2xBsaQ0_FSJXNkPVXQekBnWD4hXPOaCjCT00wo/dev' 

यह इतना पद प्रासंगिक है:

How to use Cucumber to test non-Ruby, non-Rack API's

लेकिन मैं Capybara का उपयोग करने के बाद से मैं एक HTML इंटरफ़ेस का परीक्षण कर रहा हूँ चाहते हैं। एक अन्य विकल्प यहाँ वर्णित है:

http://blogs.kent.ac.uk/webdev/2012/08/02/using-capybara-webkit-with-cucumber-without-rails-or-rack/

और मैं चर्चा यहाँ निम्नलिखित किया गया है:

https://groups.google.com/group/cukes/browse_thread/thread/297163800eaf2968

हालांकि मैं वास्तव में चाहते हैं समझने के लिए सिर्फ रैक बात बंद करने के लिए , और मैं ऊपर वर्णित ब्लॉग पोस्ट में वर्णित वेबकिट की बजाय मशीनीकरण का उपयोग करने की उम्मीद कर रहा था, क्योंकि मैं इस समय मैकेनिकल को बेहतर समझता हूं।

किसी भी तरह, क्या यहां कोई सर्वोत्तम अभ्यास है, या क्या मैं केवल विकल्पों के साथ प्रयोग करना जारी रखता हूं?

क्या कष्टदायक तरह का है यहाँ Capybara निर्देश है कि: https://github.com/jnicklas/capybara का कहना है कि:

If you are not using Rails, set Capybara.app to your rack app:

Capybara.app = MyRackApp

किंतु किसी अन्य त्रुटि "अप्रारंभीकृत निरंतर वस्तु :: MyRackApp (NameError)" उत्पन्न करता है और मुझे यकीन है कि नहीं कर रहा हूँ MyRackApp क्या होना चाहिए, या कहां से पता लगाना है (एक सामान्य मुद्दा जो मैं रूबी के साथ काम कर रहा हूं: - /) क्या मुझे यह पता लगाने के लिए ककड़ी या कैपिबरा स्रोत के माध्यम से काम करना चाहिए कि MyRackApp क्या है?

वैसे भी, मैंने सोचा कि मैं यह सब यहां दस्तावेज करूंगा - किसी भी सुझाव की बहुत सराहना की गई। मैं अपने गूगल एप्लिकेशन स्क्रिप्ट BDD करने में सक्षम होना अच्छा लगेगा ...

उत्तर

10

If you are not using Rails, set Capybara.app to your rack app:

यह मतलब था के रूप में पढ़ने के लिए:

If the application that you are testing is a Rack app, but not Rails, set Capybara.app to your Rack app:

Capybara के README was इस सवाल के परिणाम के रूप updated

जैसा कि आप बाहरी एप्लिकेशन के खिलाफ परीक्षण चलाने के लिए चाहते हैं, आपको Capybara.app के बजाय Capybara.app_host सेट करना चाहिए।


मैं capybara-mechanize इस्तेमाल नहीं किया है लेकिन मैं इसे नहीं बाहरी गैर रैक आवेदन का परीक्षण करने का उपयोग करने के लिए सबसे अच्छा चालक हो सकता है लगता है। रैकटेस्ट और रैकेटटेस्ट से मैकेनाइजेशन विरासत रैक इंटरफेस (ज्यादातर रेल) ​​के साथ परीक्षण करने वाले ऐप्स के लिए है। यदि आपके ऐप में रैक इंटरफ़ेस नहीं है, तो capybara-mechanize सबसे अच्छा विकल्प नहीं हो सकता है।

मैं सुझाव है कि आप में निर्मित सेलेनियम का उपयोग करने, poltergeist, capybara-webkit या terminus

इसके अलावा अपने कोड थोड़ा Capybara.configure का उपयोग कर अच्छे लिखा जा सकता है:

Capybara.configure do |config| 
    config.run_server = false 
    config.default_driver = :selenium 
    config.app_host = 'https://www.google.com' # change url 
end 
+0

बहुत बहुत धन्यवाद - यह मुझे ठीक कर चुका है - और अब मैं सेलेनियम का उपयोग कर रहा हूं, जो शायद ब्राउज़र के माध्यम से चलता है, जो मुझे आसानी से Google लॉगिन को संभालने की अनुमति देता है - मुझे एक नई समस्या में डाल देता है :-(मुझे लगता है कि http://stackoverflow.com/questions/15681615/how-to-use-capybara-has-text को थोड़ी देर के लिए टीडीडी पर वापस जाना होगा ... –

7

जेरोन वान डिक on this Google group message से, बस अपने Capybara.app को उस चीज़ पर सेट करें जो सत्य का मूल्यांकन करता है। अर्थात

Capybara.app = "make sure this isn't nil" 

जब तक Capybara.run_server गलत पर सेट है, यह कभी एप्लिकेशन बूट करने के लिए कोशिश नहीं करेंगे। यह मेरे लिए अब तक काम कर रहा है।

+0

मेरा जीवन बचाया :) –

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