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

时间:2013-04-26 04:24:14

标签: ruby-on-rails-3 capybara rspec2

我正在阅读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

错误的其余部分显示Failure/Error: expect(page.current_url).to eql(project_url(project))

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

Rails.application.routes.default_url_options[:host] = 'localhost:3000'

不幸的是,这没有做任何事情。

1 个答案:

答案 0 :(得分:6)

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

添加

你看到'example.com'的原因是Capybara将其设置为默认主机。要更改它,只需在spec_help

之后的require 'capybara'中添加以下行
Capybara.default_host = 'localhost:3000'

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

然后你的网址应该与你在test.rb中设置的匹配。

无论如何,我宁愿不直接使用current_path