我的rspec文件中有以下代码块,位于/ spec文件夹的根目录中。
require 'spec_helper'
describe "home" do
subject { page }
before(:each) { visit root_path }
describe "page" do
it { should have_title('My Page')}
end
end
当我运行它时,我得到了
undefined local variable or method `root_path'
哪个没有任何意义。当我按照rails教程时,类似的设置工作得很好。有人可以帮忙吗?
修改
我的路线包括
root "static#home"
编辑2:
重新开启此主题。将我的根声明移到顶部并没有解决它。
编辑3:
在我的rspec配置中包含url_helpers的功能是什么。我以前从来没有这样做过。任何人都可以回答为什么这有用吗?
答案 0 :(得分:36)
默认情况下,指定的路线在规格中不可用。将以下代码添加到spec_helper.rb
:
RSpec.configure do |config|
config.include Rails.application.routes.url_helpers
end
答案 1 :(得分:12)
在您的routes.rb中,查看您是否已定义root
。像这样:
root :to => 'home#index'
答案 2 :(得分:7)
你弄清楚了你的问题,但我想让别人知道他们可能收到错误信息的另一个原因......
NameError: undefined local variable or method `root_path'
...是因为他们renamed the "root" route:
例如:
root to: 'pages#landing', as: :home
这会在您的应用中创建home_path
和home_url
作为命名助手,而root_path
和root_url
将未定义。
答案 3 :(得分:1)
正如@emaillenin
所述,您需要在root to: "controller#action"
文件中加入routes.rb
但是,您需要确保正确声明这一点 - 我找不到root_path
之前已经找到它,只是因为它位于routes.rb
文件的末尾什么
显示整个routes.rb
文件