rails json.jbuilder API с помощью rspec -> ActionView :: MissingTemplate - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть проект rails (6.0.0), в котором ответы по маршрутам API собираются вместе с jbuilder (2.9.1). Я сталкиваюсь с ошибкой, используя rspec-rails (3.9.0), где я пытаюсь проверить контроллер, но он выдает эту ошибку:

Failure/Error: render :show

     ActionView::MissingTemplate:
       Missing template api/users/show, application/show with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in:
         * "#<RSpec::Rails::ViewRendering::EmptyTemplateResolver::ResolverDecorator:0x00007efbf0062f50>"
         * "#<RSpec::Rails::ViewRendering::EmptyTemplateResolver::ResolverDecorator:0x00007efbf0062ed8>"
         * "#<RSpec::Rails::ViewRendering::EmptyTemplateResolver::ResolverDecorator:0x00007efbf0062e88>"
     # ./app/controllers/api/users_controller.rb:8:in `create'
     # ./spec/controllers/api/users_controller_spec.rb:7:in `block (4 levels) in <top (required)>'
     # -e:1:in `<main>'

controllers / api / users_controller.rb:

def create
  @user = User.new(user_params)
  if @user.save
    login(@user)
    render :show
  else
    render json: @user.errors.full_messages, status: 422
  end
end

views / api / users / show.json.jbuilder:

json.partial! 'api/users/user', user: @user

rout.rb:

  namespace :api, defaults: { format: :json } do
    resources :users, only: [:create, :index, :update]

users_controller_spec.rb:

it 'validates the presence of username, password, and email' do
  post :create, params: { use_route: 'api/users', user: { username: 'username', password: 'password', email: 'email' } }
  expect(response).to have_http_status 200
end

Я много искал в стеке, но не нашел ничего, что помогло бы с этим. Не уверен, что это проблема с рельсами или я что-то не так настраиваю. Похоже, что он продолжает пытаться найти файл формата html, в отличие от json, хотя я установил формат по умолчанию для json в файле rout.rb в пространстве имен api.

Любая помощь будетоценили!

...