5

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

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

4

1 回答 1

7

host 语句应该放在 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

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

无论如何,我宁愿没有current_path直接使用的麻烦。

于 2013-04-26T04:30:34.957 回答