-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

相關問題