缺少主机链接!请提供:host参数,设置default_url_options [:host],或将:only_path设置为true

mai*_*aik 5 capybara rspec2 ruby-on-rails-3

我正在阅读Rails 4 in Action.我在使用Rspec和Capybara进行测试时遇到了上述错误.我的viewing_projects_spec.rb看起来像这样:

require 'spec_helper'

feature "Viewing projects" do
  scenario "Listing all projectcs" do
    project = FactoryGirl.create(:project, name: "TextMate 2")
    visit '/'
    click_link 'TextMate 2'
    expect(page.current_url).to eql(project_url(project))
  end
end
Run Code Online (Sandbox Code Playgroud)

其余的错误说Failure/Error: expect(page.current_url).to eql(project_url(project)).

我做了一些谷歌搜索,人们说将以下内容放在config/environments/development.rb中:

Rails.application.routes.default_url_options[:host] = 'localhost:3000'
Run Code Online (Sandbox Code Playgroud)

不幸的是,这没有任何作用.

Bil*_*han 6

host语句应该放在config/environments/test.rb而不是development.rb中,因为你正在运行测试.

您看到'example.com'的原因是Capybara将此设置为默认主机.要改变这种状况,只需添加以下行spec_helprequire 'capybara'

Capybara.default_host = 'localhost:3000'
Run Code Online (Sandbox Code Playgroud)

参考:https://rspec.lighthouseapp.com/projects/16211-cucumber/tickets/206

那么你的网址应该与你在test.rb中设置的匹配.

无论如何,我宁愿不current_path直接使用那个麻烦.

  • 如果我更改为 `Rails.application.routes.default_url_options[:host] = 'www.example.com'` 测试通过 (3认同)