-1

我从Rails的4.1.9至4.2.2.In轨4.1.9 RSpec的是green.After升级,当我跑我的升级Rails应用程序测试中,我得到了几个rspec失败。变化轨之后,从串行响应升级到4.2.2从4.1.9

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: '[email protected]: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' ]“在响应body.I实际上是序列化使用Activemodel串行器响应。

我无法找到failure.Any洞察背后的原因将是有益的。

回答

1

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

所以你得到的错误,因为数组期望整数作为索引。

检查你JSON.parse(response.body)得到什么。

+0

JSON.parse(response.body)是给散列数组的更多细节。 [{“ID” => 1,“名” =>“样品类型”}] –

+1

@CharlesSkariah所以它解释完全如我所说 –

+0

@CharlesSkariah也许你想要做'错误JSON.parse(response.body) [0] ['credit_value_rating_types']'如果只有一个项目 –

0

一整天的研究后,我终于能够找到被activemodel的串行gem.Once我没有铁轨的升级有一个与他们发送的响应一些潜在的问题,产生的solution.The问题。

对于一些响应,甚至没有工作的序列化程序。

的解决方案是明确添加AMS宝石和提稳定分支

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

bundle install 

解决规范失败这一点。 您可以用以下链接 Github Issue

相关问题