【问题标题】:Optionally using capybara-webkit with RSpec可选择使用带有 RSpec 的 capybara-webkit
【发布时间】:2011-12-12 22:53:03
【问题描述】:

我更喜欢使用 capybara-webkit 作为与 capybara 一起使用的驱动程序,但不要指望我团队中的其他开发人员会跳过安装 QT 来做同样的事情。我想从 gemfile 中删除 capybara-webkit 并仅在需要时将其用作测试驱动程序。我尝试在我的 spec_helper.rb 文件中使用以下代码来执行此操作:

begin
  require 'capybara-webkit'
  driver = :webkit
  puts "capybara-webkit has been detected."
rescue LoadError
  driver = :selenium
  puts "capybara-webkit unavailable. Falling back to Selenium"
  puts "For faster, headless integration tests, install capybara-webkit"
end

Capybara.javascript_driver = driver

问题是即使安装了 capybara-webkit,require 也会失败。我只能假设这是因为它不在我的应用程序包中。我怎样才能解决这个问题?有没有一种不需要将 capybara-webkit 添加到 Gemfile 的方法来解决这个问题?

【问题讨论】:

    标签: ruby-on-rails ruby bundler capybara


    【解决方案1】:

    与其执行要求检查,不如检查应该存在的另一个组件如何? Ruby 范围之外的东西。您需要这样做,因为包中的 gem 不可用。

    【讨论】:

    • 好主意。我可以看看我是否可以检测到 QT,但归根结底,用户仍然必须拥有 capybara-webkit gem。嗯。想知道是否有一种方法可以将该条件添加到我的 gemfile 中。如果 QT 存在,他们会安装 capybara-webkit。
    • 我基本上已经放弃了。我以为我可以在我的 gemfile 中使用 Gem.Available,但这也仅限于你的包。我只是尝试要求每个人都安装QT!
    【解决方案2】:

    我认为您只想将自定义组添加到 Gemfile 并将 capybara-webkit 放在那里。然后其他开发人员可以安装该捆绑包,但排除该组。

    【讨论】:

    • 是的,我想过那样做,但我认为这对我们不起作用。我喜欢将 .bundle/config 检查到源代码管理中,因为它已设置为为该项目提供所有 gem。如果我使用不同的参数运行bundle install,我相信捆绑程序会更新该文件。下次运行 bundle install 时,将从配置文件中提取参数。他们排除了那个组,而我包括了它,我们不是一直在更新那个文件吗?
    • 是的,您会不断更新该文件。不建议将 .bundle/config 签入源代码管理,尽管您可以通过在 ~/.bundler/config 中指定您的个人设置来摆脱它。这显然会将这些设置提升到全局而不是每个项目,因此这可能不适合您。
    【解决方案3】:

    我也喜欢同时使用两者,一般来说,webkit 更快,但有时我喜欢看到浏览器做一些事情(比如当我不知道发生了什么,或者向客户展示时)我的解决方案是都通过 gemfile 安装,并在你的 spec_helper.rb 中设置它

    Capybara.javascript_driver = :webkit unless ENV['SHOWJS']
    

    这将我的默认设置为无头驱动程序,当我想在 selenium 中查看它时,我可以运行以下命令:

    SHOWJS=1 rspec spec/features/user/new_spec.rb
    

    如果你使用guard之类的,你可能不得不导出环境变量,因为我认为你不能直接传入它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-13
      • 2012-06-28
      • 1970-01-01
      • 2016-02-07
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多