带有下划线的Rspec控制器名称 - 映射失败

时间:2018-04-09 09:30:57

标签: ruby-on-rails rspec

我有一个名为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?

1 个答案:

答案 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'}。问题不在于我的控制器名称。