NameError:添加路由命名空间后未初始化的常量ControllerName

时间:2018-01-08 07:06:07

标签: ruby-on-rails ruby rspec

我正在rspec-rails (3.7.1)使用rails (5.1.4)

所有测试都成功运行,但在将命名空间添加到routes.rb文件后,我收到此错误:

An error occurred while loading ./spec/controllers/stores_controller_spec.rb.
Failure/Error:
RSpec.describe StoresController, type: :controller do

NameError:
  uninitialized constant StoresController

这是我的routes.rb文件:

namespace 'api' do
 namespace 'v1' do
  resources :stores
 end
end

我的stores_controller_spec.rb

require 'rails_helper'

RSpec.describe StoresController, type: :controller do
 let(:store) { FactoryBot.create(:store) }

 describe "GET index" do
     it 'has a 200 status code' do
         request.headers.merge!(auth_headers)
         get :index
         expect(response.status).to eq(200)
     end
 end
end

1 个答案:

答案 0 :(得分:2)

当你有一个像

这样的控制器路由名称空间时
api/v1/stores

然后Rails希望控制器命名为

Api::V1::StoresController 

并位于名为

的文件中
app/controllers/api/v1/stores_controller.rb