为什么JBuilder在测试RSPEC时没有在JSON中返回响应体

Kir*_*irk 28 json rspec ruby-on-rails jbuilder

当使用DHH的JBuilder测试来自RSPEC控制器测试的JSON响应时,我的response.body总是"{}".它在开发/生产模式下工作正常.当我使用to_json方法而不是jbuilder时,我在response.body中获得了正确的JSON.

任何人都有一个线索,为什么我的response.body在测试时总是"{}"?

-----调试器

它"应该通过JSON返回购物车项目",:焦点做

get:index,:format =>:json
end

(rdb:1)response.body

"{}"

Kir*_*irk 61

对于任何有同样问题的人.我已经弄清楚了.

您必须render_views在控制器测试中调用您正在执行的操作.如果你这样做,你应该看到response.body包含你的JSON :)

  • 如何使用`render_views`,参考:https://www.relishapp.com/rspec/rspec-rails/v/3-5/docs/controller-specs/render-views (2认同)

neo*_*oin 25

您可以从https://github.com/rails/jbuilder/issues/32找到解决方案

所以在rspec/spec_helper.rb中

RSpec.configure do |config|
  # https://github.com/rails/jbuilder/issues/32
  config.render_views = true
end
Run Code Online (Sandbox Code Playgroud)

添加上面的选项后,JSON结果将通过jbuilder渲染器显示