【问题标题】:Change in response from serializers after rails upgrade to 4.2.2 from 4.1.9rails 从 4.1.9 升级到 4.2.2 后序列化程序的响应变化
【发布时间】:2017-09-13 09:21:19
【问题描述】:

我正在将我的 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"

rails 升级到 4.2.2 后,我遇到了类似的故障,

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

对于从 4.1.9 到 4.2.2 的 rails 版本,我在响应正文中缺少键“['credit_value_rating_types']”。我实际上是使用 Activemodel 序列化器对响应进行序列化。

我无法找到失败背后的原因。任何见解都会有所帮助。

【问题讨论】:

    标签: ruby-on-rails json rspec active-model-serializers rails-upgrade


    【解决方案1】:

    看来JSON.parse(response.body) 返回的是一个数组而不是一个哈希值。

    所以你会得到错误,因为数组需要整数作为索引。

    检查您在JSON.parse(response.body) 中获得的内容。

    【讨论】:

    • JSON.parse(response.body) 给出了一个哈希数组。 [{"id"=>1, "name"=>"样本类型"}]
    • 我试过了,也先用过,但没有用。
    • 我想知道它正在使用旧版本的 rails 以及如何处理 rails 升级
    【解决方案2】:

    经过一整天的研究,我终于找到了解决方案。问题是由 activemodel 序列化程序 gem 造成的。一旦我进行了 rails 升级,他们发送的响应就会出现一些潜在问题。

    对于某些响应,序列化程序甚至无法正常工作。

    解决方案是显式添加 AMS gem 并提及稳定分支

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

    解决了规范失败的问题。 您可以通过以下链接找到更多详细信息 Github Issue

    【讨论】:

      猜你喜欢
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多