问题
When testing a JSON response from an RSPEC controller test using DHH's JBuilder, my response.body is always "{}". It works fine in development/production modes AND when I use the to_json method instead of jbuilder, I get proper JSON in my response.body.
Anyone have a clue as to why my response.body would always be "{}" when testing?
----- Debugger
it "should return the cart items via JSON", :focus do
get :index, :format => :json
end
(rdb:1) response.body
"{}"
回答1:
For anyone that is having the same issue. I have figured it out.
You must call render_views
within the controller tests you are doing. If you do that, you should then see a response.body
with your JSON contained :)
回答2:
You could find a solution from https://github.com/rails/jbuilder/issues/32
So in rspec/spec_helper.rb
RSpec.configure do |config|
# https://github.com/rails/jbuilder/issues/32
config.render_views = true
end
After above option are added, JSON result will show via jbuilder renderer
来源:https://stackoverflow.com/questions/9965945/why-is-jbuilder-not-returning-a-response-body-in-json-when-testing-rspec