Ruby on rails 3 缺少要链接到的主机!请提供:host参数,设置默认的\u url\u选项[:host],或将:only\u path设置为true

Ruby on rails 3 缺少要链接到的主机!请提供:host参数,设置默认的\u url\u选项[:host],或将:only\u path设置为true,ruby-on-rails-3,capybara,rspec2,Ruby On Rails 3,Capybara,Rspec2,我正在阅读Rails 4的运行。在使用Rspec和Capybara进行测试时,我遇到了上述错误。我的查看\u projects\u spec.rb如下所示: require 'spec_helper' feature "Viewing projects" do scenario "Listing all projectcs" do project = FactoryGirl.create(:project, name: "TextMate 2") visit '/'

我正在阅读Rails 4的运行。在使用Rspec和Capybara进行测试时,我遇到了上述错误。我的查看\u projects\u 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
其余的错误是
失败/错误:expect(page.current\u url).to eql(project\u url(project))

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

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

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

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

添加 您看到“example.com”的原因是Capybara将其设置为默认主机。要改变这一点,只需在
spec\u help
中的
require'capybara'

Capybara.default_host = 'localhost:3000'
参考:

然后,URL应该与test.rb中设置的URL匹配


无论如何,我不希望直接使用
current\u path有那么大的麻烦。

好的,在测试之后,我得到这个:
expected:http://localhost:3000/projects/41“得到:”http://www.example.com/projects/41“
如果我更改为
Rails.application.routes.default\u url\u选项[:host]='www.example.com'
测试passes@mikeglaz,快到了。也许在某个地方你设置了“example.com”,只需grep整个项目就可以找到它,然后更改就可以了。@mikeglaz,旁边,我自己更喜欢
current\u path
而不是
current\u url
,因为
current\u path
中没有域,所以不容易出错。grep'ed了整个文件夹,没有设置为example.com…非常奇怪。