Я создаю API и при написании тестов я сталкиваюсь со странной ошибкой UrlGenerator.
У меня есть API на первой версии, и это мой контроллер Users.
class Api::V1::UsersController < ApplicationController
respond_to :json
def show
respond_with User.find(params[:id])
end
end
Вот спецификация для этого контроллера пользователя
require 'rails_helper'
RSpec.describe Api::V1::UsersController, type: :controller do
before(:each) { request.headers['Accept'] = "application/vnd.marketplace.v1" }
describe "GET #show" do
before(:each) do
@user = FactoryBot.create :user
get :show, format: :json
end
it "returns the information about a reporter on a hash" do
user_response = JSON.parse(response.body, symbolize_names: true)
expect(user_response[:email]).to eql @user.email
end
it { should respond_with 200 }
end
end
Когда я запускаю этотspec Я получаю следующее сообщение об ошибке: `Failure / Error: get: show, format:: json
ActionController::UrlGenerationError:
No route matches {:action=>"show", :controller=>"api/v1/users", :format=>:json}`
У меня есть только один маршрут для моего API:
api_user GET /users/:id(.:format) api/v1/users#show {:subdomain=>"api", :format=>:json}
Кто-нибудьзнаете, почему я получаю эту ошибку?Мне кажется, что, основываясь на маршруте, возвращенном из списка маршрутов API, это должно работать.Мой routes.rb
файл указан ниже:
namespace :api, defaults: { format: :json }, constraints: { subdomain: 'api' }, path: '/' do
scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do
resources :users, :only => [:show]
end
end