【发布时间】:2018-02-11 16:15:09
【问题描述】:
我有以下路线:
config/routes.rb:
Rails.application.routes.draw do
scope module: :api do
namespace :v1 do
resources :users
end
end
end
controllers/api/v1/users_controller.rb:
module Api
module V1
class UsersController < ApplicationController
def index
...
end
end
end
end
控制器规格在文件夹spec/controllers/api/v1/下。
spec/controllers/api/v1/users_controller_spec.rb:
module Api
module V1
RSpec.describe UsersController, type: :controller do
let!(:users) { create_list(:user, 10) }
describe 'GET /v1/users' do
before { get :index }
# Already tried `get '/v1/users'`, got the same error
it 'should return 10 users' do
expect(JSON.parse(response).size).to eq(10)
end
end
end
end
end
运行测试后,我收到以下错误:
ActionController::UrlGenerationError: 没有路由匹配 {:action=>"index", :controller=>"api/v1/users"}
请注意,它从某处“推断”api 部分,但我的路线如下:
v1/users
v1/users/:id
...
我怎样才能让它工作?
【问题讨论】:
-
旁注:最好使用
RSpec.describe Api::V1::UsersController而不是将其放入Api::V1模块中。
标签: ruby-on-rails rspec ruby-on-rails-5 rspec-rails