我有一个名为GkServiceAreaController的控制器,它在app / controllers / gk_service_area_controller.rb中定义。 路线映射是
get '/:slug', to: 'gk_service_area#index', as: :service_details
我的规格有规格 /controllers/gk_service_area_controller_spec.rb
it 'should render' do
get :index
expect(assigns(:test)).to eq('asfasfd')
end
该应用程序运行正常,但RSpec失败并出现此错误:
ActionController::UrlGenerationError:
No route matches {:action=>"index", :controller=>"gk_service_area"}
当我尝试将路线映射更改为:
get '/:slug', to: 'GkServiceArea#index', as: :service_details
或者
get '/:slug', to: 'gkServiceArea#index', as: :service_details
它将失败并显示错误:不支持控制器名称。
我现在如何解决Rspec?
答案 0 :(得分:0)
我找到了原来问题的答案。问题是这条路线的映射如下所示。
get '/:slug', to: 'gk_service_area#index', as: :service_details
所以当我运行测试时,它必须是
it 'should render' do
get :index, params: { slug: 'abc' }
expect(assigns(:test)).to eq('asfasfd')
end
区别在于{slug:'abc'}。问题不在于我的控制器名称。