【问题标题】:Cucumber/Capybara tests returning Addressable::URI::InvalidURIError when I visit url当我访问 url 时 Cucumber/Capybara 测试返回 Addressable::URI::InvalidURIError
【发布时间】:2015-08-04 11:51:50
【问题描述】:

我无法访问以下网址“http://localhost:7000/login/next=” 在我的页面对象中,我设置了以下内容:

class LoginPage < SitePrism::Page
    set_url "/login/next="

我在 env.rb 文件中设置了以下内容

Capybara.app_host = "http://localhost:7000"
Capybara.server_host = "localhost"
Capybara.server_port = "7000"

并且需要以下内容:

require 'uri'
require 'net/http'
require 'open-uri'

当我运行测试时,它会得到以下结果

Cannot assemble URI string with ambiguous path: ':7000/login/next='(Addressable::URI::InvalidURIError)

Capybara 不喜欢 url 中的端口/主机。有什么想法可以让谁来做这个吗?

【问题讨论】:

  • set_url 方法中的代码是什么?
  • 我建议在config/test.rb 中设置端口和主机。在 Capybara 中设置它会覆盖默认的测试环境。你能发布你的 Cucumber 测试吗?
  • 是的,我已将其设置在 feature/support/env.rb Capybara.app_host = "localhost:7000" Capybara.server_host = "localhost" Capybara.server_port = "7000"

标签: ruby-on-rails ruby cucumber capybara


【解决方案1】:

在本地运行时不应设置 Capybara.app_host。来自Capybara

通常 Capybara 会测试一个进程内的 Rack 应用程序,但您也可以使用它与正在运行的 Web 服务器通信 互联网上的任何地方,通过设置 app_host:

Capybara.current_driver = :selenium Capybara.app_host = 'http://www.google.com' ... visit('/')

设置Capybara.server_port = 10000 应该没问题。另外我认为 server_port 需要一个数字而不是字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-06
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多