使用Capybara测试URL

时间:2016-12-07 00:25:34

标签: capybara ruby-on-rails-5

我很好奇是否有更好的方法来测试页面中是否存在完整的 URL (包括协议)。

使用Capybara 2.10.2和Rails 5.0.0.1,我有以下设置:

rails_helper.rb

# Other config and content excluded for brevity.

RSpec.configure do |config|
  config.include Rails.application.routes.url_helpers
end

test_url_spec.rb

describe 'Widget', type: :feature, js: true do
  it 'shows correct URL' do
    # Sets the default_url_options to match the session's server config.
    # default_url_options is used by the url
    self.default_url_options = {host: page.server.host, port: page.server.port} 
    # Assume that page contains the full URL.
    expect(page).to have_content(root_url) 
  end
end

我相信我可以在适当的上下文中将default_url_options settor移动到before(:each)块。鉴于默认情况下, URL 选项未包含在Capybara中。我不知道在哪里可以使用它们。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不知道这对你有用,但这对我有用:

RSpec.configure do |config|
  config.before(:type => :feature) do
    default_url_options[:host] = "http://localhost:31337"
  end
end

Capybara.server_port = 31337
Capybara.app_host = "http://localhost:31337"