我正在Ruby on Rails項目中工作,並決定使用Jbuilder處理我的模型的json序列化。但是,當使用Rspec以請求規格測試我的控制器時,使用*.json.jbuilder
視圖,我的request.body
將作爲StringIO
對象返回,而不是String
。Rails請求Rspec Jbuilder,request.body是一個StringIO對象
我在受影響的控制方法是這樣的:
def list
@groups = ...
end
而且list.json.jbuilder
文件看起來像:
json.array! @groups, :id, :name
測試片段是這樣的:
get '/api/v1/groups', { :format => :json }
puts request.body.class.name # gives StringIO instead of String...
我使用Rails 4.2.2,Ruby 2.2.2,Rspec-Rails 3.3.2和JBuilder 2.3.0
我已在我rails_helper.rb
:
config.render_views # tried with config.render_views = true too
爲異常的堆棧跟蹤是:
Failure/Error: expect(json['groups'].length).to eq (2)
TypeError:
no implicit conversion of StringIO into String
我可以補充一點,它不使用Rspec的時候工作。
感謝
不要在您的rails_helper.rb中設置'config.render_views',因爲它會減慢您的所有控制器規格。而是按照規範或上下文塊進行。 – max