3

在使用 Guard 运行的 Konacha 测试中,我无法使用 Poltergeist 作为 Capybara 的驱动程序。

我在 config/initializers/konacha.rb 中有以下内容:

Konacha.configure do |config|
  require 'capybara/poltergeist'
  config.spec_dir     = "spec/javascripts"
  config.spec_matcher = /_spec\.|_test\./
  config.driver       = :poltergeist
  config.stylesheets  = %w(manifest_public)
end if defined?(Konacha)

我的测试在 Poltergeist 中成功运行bundle exec rake konacha:run

但是,当我使用以下 Guardfile 时:

guard :konacha, driver: :poltergeist do
  watch(%r{^app/assets/javascripts/(.*)\.js(\.coffee)?$}) { |m| "#{m[1]}_spec.js" }
  watch(%r{^spec/javascripts/.+_spec(\.js|\.js\.coffee)$})
end

Guard 在启动 Konacha 时抱怨:

14:18:05 - 信息 - 开始 Konacha

14:18:05 - 错误 -Capybara::DriverNotFoundError: 未找到名为 :poltergeist 的驱动程序,可用驱动程序: :rack_test, :selenium>

4

1 回答 1

3

我找到了一个可行的解决方案,但它似乎有点 hacky,所以如果有人想提出更好的建议,我会全神贯注。我意识到 Konacha 初始化程序直到 Guard 加载 Konacha 之后才被加载,所以我不得不在Capybara::PoltergeistGuardfile 中复制驱动程序的注册:

require 'capybara/poltergeist'
Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {:js_errors => true})
end

guard :konacha, driver: :poltergeist do
  watch(%r{^app/assets/javascripts/(.*)\.js(\.coffee)?$}) { |m| "#{m[1]}_spec.js" }
  watch(%r{^spec/javascripts/.+_spec(\.js|\.js\.coffee)$})
end
于 2013-11-05T19:36:44.187 回答