Изменение ответа от сериализаторов после обновления рельсов до 4.2.2 с 4.1.9

Я обновлял свое приложение rails с Rails 4.1.9 до 4.2.2. В rails 4.1.9 rspec был зеленым. После обновления, когда я запускал тест, я получил пару сбоев rspec.

Rails version  = 4.2.2
Ruby version = 2.2.4
rspec = 3.0.0

Following are the gems I used for testing,
gem 'rspec-rails'
  gem 'rspec_junit_formatter', require: false, git: 'git@github.com:sj26/rspec_junit_formatter.git'
  gem 'awesome_print'
  gem 'factory_girl'
  gem 'jasmine'
  gem 'jasmine-jquery-rails'
  gem 'quiet_assets'
  gem 'sequel'
  gem 'brakeman', require: false
  gem 'qunit-rails'
gem 'webmock', '~> 2.3.1' 
  gem 'capybara'
  gem 'simplecov', require: false
  gem 'simplecov-rcov', require: false
  gem 'cucumber-rails', require: false
  gem 'rack_session_access'
  gem 'poltergeist'
  gem "faker"
  gem 'shoulda-matchers'
  gem "shoulda-callback-matchers"

После обновления рельсы до 4.2.2 я получаю сбой, как,

 Failure/Error: response_json = JSON.parse(response.body)['credit_value_rating_types']
     TypeError:
       no implicit conversion of String into Integer

В версии rails с 4.1.9 по 4.2.2 мне не хватает ключа "['credit_value_rating_types']" в теле ответа. Я на самом деле сериализирую ответ, используя сериализаторы Activemodel.

Я не смог найти причину неудачи. Любое понимание будет полезным.

2 ответа

Похоже на то JSON.parse(response.body) возвращает массив, а не хеш.

И поэтому вы получите ошибку, потому что массивы ожидают целые числа в качестве индексов.

Проверьте, что вы получаете в JSON.parse(response.body),

После целого дня исследований я, наконец, смог найти решение. Проблема была создана с помощью activemodel serializer gem. Как только я обновил рельсы, возникли некоторые потенциальные проблемы с ответом, который они посылают.

По некоторым ответам сериализаторы там даже не работают.

Решение состоит в том, чтобы явно добавить гем AMS и упомянуть стабильную ветвь

gem 'active_model_serializers', github: 'rails-api/active_model_serializers', branch: '0-8-stable'

bundle install

Решил провал спецификации с этим. Вы можете найти более подробную информацию по следующей ссылке Github Issue

Другие вопросы по тегам