Я работаю над проектом в Ruby on Rails, и я решил использовать Jbuilder для обработки сериализации json для моих моделей. Однако при использовании Rspec для тестирования моих контроллеров с спецификациями запросов, используя *.json.jbuilder
, мой request.body
возвращается как объект StringIO
, а не String
.Rails Request 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
StackTrace за исключением является:
Failure/Error: expect(json['groups'].length).to eq (2)
TypeError:
no implicit conversion of StringIO into String
Я могу добавить, что работает, когда не используется RSpec.
Благодаря
Не устанавливайте 'config.render_views' в свой rails_helper.rb, так как это замедлит все ваши спецификации контроллера. Делайте это по отдельности или в контекстном блоке. – max