首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rspec ->操作的rails json.jbuilder api with::MissingTemplate

使用rspec ->操作的rails json.jbuilder api with::MissingTemplate
EN

Stack Overflow用户
提问于 2019-11-07 10:38:38
回答 1查看 435关注 0票数 2

我有一个rails (6.0.0)项目,其中api路由响应与jbuilder (2.9.1)放在一起。我在使用rspec-rails (3.9.0)测试控制器时遇到了一个错误,但它抛出了这个错误:

代码语言:javascript
复制
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>'

控制器/api/users_CONTROLER.rb:

代码语言:javascript
复制
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:

代码语言:javascript
复制
json.partial! 'api/users/user', user: @user

routes.rb:

代码语言:javascript
复制
  namespace :api, defaults: { format: :json } do
    resources :users, only: [:create, :index, :update]

users_controller_spec.rb:

代码语言:javascript
复制
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

我在stackoverflow上看了很多,但没有找到任何对此有帮助的东西。不确定是rails版本问题,还是我没有正确设置某些内容。尽管我在api名称空间下的routes.rb文件中将默认格式设置为json,但它似乎一直在尝试查找html格式的文件,而不是json。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2020-05-14 01:53:04

我知道这个问题发布已经有一段时间了,但我要检查两件事:确保告诉RSpec配置渲染视图,并确保以json身份发布/获取。

在spec/rails_helper.rb中

代码语言:javascript
复制
RSpec.configure do |config|
   config.render_views = true
   # the rest of config
end

在您的规范文件中

代码语言:javascript
复制
post :create, params: { ... }, as: :json  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58741194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档