2

运行后zeus rspec spec/,如果有使用js:true. 它运行测试并报告结果,但它不退出。rspec但是,如果我不运行它,它运行良好zeus

我可以用这个简单的规范重新创建问题:

require 'spec_helper'

describe "users index" do
  before { visit root_path }

  it "should not hang", js: true do
    expect(page).to have_content("Welcome")
  end  
end

以下是我的主要部分spec_helper.rb

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

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

RSpec.configure do |config|

  config.use_transactional_fixtures = false
  config.before(:each) do
    DatabaseCleaner.strategy = example.metadata[:js] ? :truncation : :transaction
    DatabaseCleaner.start
  end
  config.after(:each) do
    DatabaseCleaner.clean
  end

  config.infer_base_class_for_anonymous_controllers = false

  config.include Capybara::DSL
end

我尝试删除database_cleaner,但这似乎并没有影响任何事情。

这是我感兴趣的宝石

ruby '2.0.0'
gem 'rails', '4.0.2'

group :development, :test do
  gem 'rspec-rails', '2.14.1'
  gem 'guard-rspec', '4.2.3'
  gem 'teaspoon', '0.7.7'
  gem 'guard-teaspoon', '0.0.4'
  gem 'poltergeist', '1.5.0'
  gem 'database_cleaner', '1.2.0'
end

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
  gem 'factory_girl_rails', '4.3.0'
end

我正在使用phantomjs 1.9.0通过brew

4

1 回答 1

1

根据https://github.com/jonleighton/poltergeist#remote-debugging-experimental,此代码是实验性的:

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

如果我删除它,则将zeus rspec spec/控制权返回给 shell。

解决方案是将实验代码注册为单独的驱动程序,称为:poltergeist_debug

Capybara.register_driver :poltergeist_debug do |app|
  Capybara::Poltergeist::Driver.new(app, inspector: true)
end

Capybara.javascript_driver = :poltergeist

并且在我需要检查 Web 浏览器的状态时临时使用该驱动程序

require 'spec_helper'

Capybara.javascript_driver = :poltergeist_debug

describe "users index" do
  before { visit root_path }

  it "should not hang", js: true do
    page.driver.debug
    expect(page).to have_content("Welcome")
  end  
end

并在宙斯之外调试规范

于 2014-01-03T14:50:07.287 回答