2012-04-01 29 views
27

Khi thử nghiệm phản hồi JSON từ kiểm tra bộ điều khiển RSPEC bằng JBuilder của DHH, response.body của tôi luôn là "{}". Nó hoạt động tốt trong các chế độ phát triển/sản xuất VÀ khi tôi sử dụng phương thức to_json thay vì jbuilder, tôi nhận được JSON thích hợp trong response.body của tôi.Tại sao JBuilder không trả về nội dung phản hồi trong JSON khi kiểm tra RSPEC

Bất kỳ ai cũng có manh mối về lý do tại sao câu trả lời của tôi luôn luôn là "{}" khi thử nghiệm?

----- Debugger

nó "nên trả lại các mặt hàng giỏ qua JSON",: tập trung làm

get: chỉ số,: format =>: json
cuối

(rdb: 1) response.body

"{}"

Trả lời

55

Đối với bất kỳ ai có cùng vấn đề. Tôi đã tìm ra nó.

Bạn phải gọi render_views trong các kiểm tra của bộ điều khiển mà bạn đang thực hiện. Nếu bạn làm điều đó, sau đó bạn sẽ thấy một response.body với JSON của bạn chứa :)

+0

Bạn phải gọi 'render_views' vì khi chạy bộ điều khiển, xem hiển thị được tắt theo mặc định. Điều này làm tăng tốc độ chạy thử vì bạn chỉ nên kiểm tra hành vi của bộ điều khiển trong kiểm tra bộ điều khiển. –

+2

cách sử dụng 'render_views', ref: https://www.relishapp.com/rspec/rspec-rails/v/3-5/docs/controller-specs/render-views –

+0

https://github.com/ rspec/rspec-rails > Lưu ý: Để khuyến khích thử nghiệm nhiều lần bị cô lập hơn, các chế độ xem không được hiển thị theo mặc định trong thông số bộ điều khiển. Nếu bạn đang xác minh logic xem rời rạc, hãy sử dụng thông số chế độ xem. Nếu bạn đang xác minh hành vi của một bộ điều khiển và xem cùng nhau, hãy xem xét thông số yêu cầu. Bạn có thể sử dụng 'render_views' nếu bạn phải xác minh nội dung xem được hiển thị trong một đặc tả bộ điều khiển, nhưng điều này không được khuyến khích. –

25

Bạn có thể tìm một giải pháp từ https://github.com/rails/jbuilder/issues/32

Vì vậy, trong rspec/spec_helper.rb

RSpec.configure do |config| 
    # https://github.com/rails/jbuilder/issues/32 
    config.render_views = true 
end 

Sau khi tùy chọn ở trên là được thêm vào, kết quả JSON sẽ hiển thị qua trình kết xuất đồ họa jbuilder

Các vấn đề liên quan