我正在阅读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'
不幸的是,这没有做任何事情。
答案 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
。