我在'Admin'命名空间中有一个相当简单的控制器'ActivityLogsController'。当运行rails server
一切都按预期工作,我可以访问路线,如/管理/活动日志。当我运行RSpec控制器规格时,每个动作测试都会返回一个失败。例如:Rails应用运行正常,但RSpec未能匹配路由
Failure/Error: get :index
ActionController::UrlGenerationError:
No route matches {:action=>"index", :controller=>"activity_logs"}
好的,我承认这看起来有点奇怪,没有显示:控制器值被命名空间。这显然是问题的一部分。
的routes.rb中有activity_logs进入正确的命名空间:
当然,运行rake routes
给了我预期的命名空间的路线,这反映了服务器正常运行的事实。
控制器在'app/controllers/admin/activity_logs_controller.rb'中定义,反映其名称空间。它被定义为:
class Admin::ActivityLogsController < ApplicationController
...
end
那么,为什么RSpec控制器规范无法正确解析路由?
如果其他人未能在其他问题中找到他们需要的东西,我正在发布这一个答案。