我有一个应用程序,它使用存储在表中的域来确定网站的某些方面。如果在db中找不到域,则会生成错误。
当我正常使用黄瓜测试时,我使用域localhost,一切都按预期工作。当我尝试使用capybara-webkit和无头测试(用于测试网站的javascript部分)时,我发现localhost没有找到域名错误。
任何人都可以告诉我如何确定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
答案 0 :(得分: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变量在这里是过剩的,但我在其他地方使用它。我不确定它为什么会起作用,但确实如此!