Ruby on rails 3 我如何配置水豚与恶鬼一起工作?

Ruby on rails 3 我如何配置水豚与恶鬼一起工作?,ruby-on-rails-3,rspec,capybara,rspec2,poltergeist,Ruby On Rails 3,Rspec,Capybara,Rspec2,Poltergeist,我有一个RSpec集成测试,需要执行一些JavaScript。我已经包括了Poltergeist并安装了PhantomJS,但每当我运行该示例时,我都会遇到以下错误: Failure/Error: page.execute_script("$('form')[0].submit();") Capybara::NotSupportedByDriverError: Capybara::Driver::Base#execute_script 规格为: require 'spec_helper'

我有一个RSpec集成测试,需要执行一些JavaScript。我已经包括了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作为其JavaScript驱动程序。报告说:

装置 将poltergeist添加到GEM文件中,并在测试设置中添加:

但它并没有具体说明应该进入哪个文件。它:

定制 您可以通过测试设置中的以下代码自定义Capybara设置Poltegeist的方式:

但我不清楚是否或何时需要在测试中包含这些内容。再说一次,如果我需要的话,我不知道该把它放在哪里


我错过了什么?

  • 我需要把水豚和Poltergiest的配置放在哪里,它到底需要说什么(或者我如何为自己确定)
  • 是否有我遗漏的步骤或配置

尝试在描述行中添加
js:true
。我知道我必须在工作时为应用程序的功能规格这样做:

describe "Signup", :type => :feature, :js => true do
我没有看到它的任何其他配置。刚才我设置它时:)

您只需在RSpec.configure块之前调用一次Capybara驱动程序配置方法:

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的真实情况:在水豚自述中

describe "Signup", :type => :feature, :js => true do
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|