Cucumber/Capybara 测试在我访问 url 时返回 Addressable::URI::InvalidURIError

Cucumber/Capybara tests returning Addressable::URI::InvalidURIError when I visit url

我无法访问以下url“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)

水豚不喜欢 url 中的 port/host。请问谁有什么想法?

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

Normally Capybara expects to be testing an in-process Rack application, but you can also use it to talk to a web server running anywhere on the internet, by setting app_host:

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

您只需设置 Capybara.server_port = 10000 就可以了。另外我认为 server_port 需要一个数字而不是字符串。