2014-06-25 16 views
8

मेरे पास एक आरएसपीसी एकीकरण परीक्षण है जिसे कुछ जावास्क्रिप्ट निष्पादित करने की आवश्यकता है। मैं Poltergeist शामिल है और स्थापित PhantomJS है, लेकिन जब भी मैं उदाहरण चलाने के लिए, मैं इस त्रुटि मिलती है:मैं पॉलीटेजिस्ट के साथ काम करने के लिए कैपिबरा को कैसे कॉन्फ़िगर कर सकता हूं?

Failure/Error: page.execute_script("$('form')[0].submit();") 
Capybara::NotSupportedByDriverError: 
    Capybara::Driver::Base#execute_script 

कल्पना है:

require 'spec_helper' 

describe "Signup", :type => :feature do 
    describe "workflow" do 
    it "ensures entry of contact information" do 
     visit 'signup/action' 
     # snip - use Capybara to fill out form elements 
     page.execute_script("$('form')[0].submit();") 
     page.should have_content("Name can't be blank") 
     page.should have_content("Email can't be blank") 

     # snip - use Capybara to fill out more form elements 
     page.execute_script("$('form')[0].submit();") 
     page.should have_content("Next page") 
    end 
    end 
end 

मुझे लगता है कि समस्या यह है कि मैं है मुझे यकीन नहीं है कि कैपिबरा को पॉटरगेरिस्ट का जावास्क्रिप्ट ड्राइवर के रूप में उपयोग करना चाहिए। Poltergeist documentation का कहना है:

Installation

Add poltergeist to your Gemfile, and in your test setup add:

require 'capybara/poltergeist' 
Capybara.javascript_driver = :poltergeist 

लेकिन यह कहना नहीं है जो फ़ाइल विशेष रूप से इसे में जाना चाहिए। यह also says:

Customization

You can customize the way that Capybara sets up Poltegeist via the following code in your test setup:

Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, options) 
end 

लेकिन यह मेरे लिए स्पष्ट करता है, तो या जब मैं अपने परीक्षणों में इस में शामिल करने की आवश्यकता होगी नहीं है। और फिर, मुझे यकीन नहीं है कि मुझे इसे कहां रखना है।


मुझे क्या याद आ रही है?

  • मैं कहां से Capybara और Poltergiest के लिए विन्यास डाल करने की आवश्यकता है, और क्या वास्तव में यह कहने की जरूरत है (या मैं कैसे तय कर सकते हैं कि खुद के लिए)?
  • क्या कोई कदम या कॉन्फ़िगरेशन का टुकड़ा है जिसे मैंने याद किया?

उत्तर

11

अपनी वर्णन पंक्ति में js: true डालने का प्रयास करें। मुझे पता है कि मुझे काम पर एक ऐप पर फीचर चश्मा के लिए ऐसा करना था:

describe "Signup", :type => :feature, :js => true do 

मुझे इसके लिए कोई अन्य कॉन्फ़िगरेशन नहीं दिख रहा है। थोड़ी देर पहले था जब मैं इसे सेट अप :)

तुम बस Capybara ड्राइवर config तरीकों एक बार अपने RSpec.configure ब्लॉक से पहले फोन कर सकते हैं:

Capybara.default_selector = :css 
Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, :window_size => [1920, 1080], :phantomjs_logger => nil) 
end 
Capybara.javascript_driver = :poltergeist 
RSpec.configure do |config| 

इसके अलावा डेटाबेस क्लीनर के साथ लेन-देन नहीं काट-छांट का उपयोग सुनिश्चित करें । Poltergeist एक अलग थ्रेड पर चलता है, तो यदि आप लेनदेन का उपयोग करते हैं तो आपको अजीब डीबी मुद्दे होंगे।

संपादित

आह js सच बात यहां के तहत उल्लेख किया गया है: capybara रीडमी में https://github.com/jnicklas/capybara#using-capybara-with-rspec

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

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