【问题标题】:Rspec Controller Name with Underscore - Mapping Failed带有下划线的 Rspec 控制器名称 - 映射失败
【发布时间】:2018-09-18 15:53:51
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails rspec


    【解决方案1】:

    我找到了原始问题的答案。问题在于这条路线的映射如下所示。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2011-07-13
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多