Ruby on rails 3 缺少要链接到的主机!请提供:host参数,设置默认的\u url\u选项[:host],或将:only\u path设置为true
我正在阅读Rails 4的运行。在使用Rspec和Capybara进行测试时,我遇到了上述错误。我的查看\u projects\u spec.rb如下所示: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 '/'
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…非常奇怪。