1

我有一个应用程序,它使用存储在表中的域来确定站点的某些方面。如果在 db 中找不到域,则会生成错误。

当我正常测试黄瓜时,我使用域 localhost,一切都按预期工作。当我尝试使用 capybara-webkit 和 headless 进行测试(用于测试网站的 javascript 部分)时,我得到了 localhost 的 domain not found 错误。

谁能告诉我如何确定 capybara-webkit 和 headless 正在使用的域和端口,以便我可以确保我可以提前在表格中插入信息。或者,也可以提前设置 Capybara。

我已经尝试了以下但没有成功(尽管这一切都适用于我的非 js/无头测试)。

Capybara.app_host = "http://localhost"
Capybara.javascript_driver = :webkit

if Capybara.current_driver == :webkit
  require 'headless'

  headless = Headless.new
  headless.start
end
4

1 回答 1

1

经过一番反复试验,我发现了一些可行的方法。我停止使用 localhost 作为数据库中的参考,而是使用 127.0.0.1 。然后我修改了 env.rb 中的代码如下。

Capybara.javascript_driver = :webkit

if Capybara.current_driver == :webkit
  require 'headless'

  @headless = Headless.new
  @headless.start
end

Before('@javascript') do
  @javascript = true
end

Capybara.app_host = @javascript.present? ? nil : "http://127.0.0.1"

我意识到 @javascript 变量对于这里的要求来说是多余的,但我在其他地方使用它。我不确定它为什么有效,但它确实有效!

于 2012-02-17T15:07:30.370 回答