2017-01-23 12 views
0

こんにちは、rspecとairborneでJSONAPIをテストすることに問題があります。 https://i.stack.imgur.com/Cyf75.pngrspecとAirborneでのJSONAPIテスト

イム・テスト以下 GETモデルもこのようhttps://i.stack.imgur.com/Y9rHt.png

RSpecの出力:

障害: 1)のタイプに 失敗/エラーを検証する必要があります/連絡先を上のGET:expect_json( 'books.0 '、タイトル:' The Great Escape ')

Airborne::PathError: 
    Expected NilClass 
    to be an object with property 0 
# /home/robert/.rvm/gems/ruby-2.4.0/gems/airborne-0.2.5/lib/airborne/path_matcher.rb:21:in `rescue in block in get_by_path' 
# /home/robert/.rvm/gems/ruby-2.4.0/gems/airborne-0.2.5/lib/airborne/path_matcher.rb:18:in `block in get_by_path' 
# /home/robert/.rvm/gems/ruby-2.4.0/gems/airborne-0.2.5/lib/airborne/path_matcher.rb:9:in `each' 
# /home/robert/.rvm/gems/ruby-2.4.0/gems/airborne-0.2.5/lib/airborne/path_matcher.rb:9:in `each_with_index' 
# /home/robert/.rvm/gems/ruby-2.4.0/gems/airborne-0.2.5/lib/airborne/path_matcher.rb:9:in `get_by_path' 
# /home/robert/.rvm/gems/ruby-2.4.0/gems/airborne-0.2.5/lib/airborne/request_expectations.rb:137:in `call_with_path' 
# /home/robert/.rvm/gems/ruby-2.4.0/gems/airborne-0.2.5/lib/airborne/request_expectations.rb:18:in `expect_json' 
# ./book_resource.rb:10:in `block (2 levels) in <top (required)>' 
# ------------------ 
# --- Caused by: --- 
# NoMethodError: 
# undefined method `[]' for nil:NilClass 
# /home/robert/.rvm/gems/ruby-2.4.0/gems/airborne-0.2.5/lib/airborne/path_matcher.rb:57:in `process_json' 

0.03121秒で完了しました(ファイルは0.17681秒でloaになりました) d) 1例、1失敗

+0

してくださいスクリーンショットへのリンクの代わりにポストコード。 「ジャック・マクルーア」) 空挺:: PathError: 期待名、expect_json(「data.1」:私はこれを行うことはできません –

+0

は、ユーザーが 失敗/エラー有効なタイプを返すべきで/ GET)が低すぎる担当者 –

答えて

0

APIレスポンスにはキーbooksがありません。代わりに、応答を{ "data": [ ... ] }と返します。

したがって、テストではexpect_json('books.0', ...)の代わりにexpect_json('data.0', ...)を指定する必要があります。

この問題を解決する必要があります。

+0

1を引き起こしますNilClass プロパティ1のオブジェクトにする 1)GET/usersは有効な型を返すべきです。 エラー/エラー:expect_json( 'data.1'、名前: "Jack McClure") #---原因: - #NoMethodError: nilのための未定義のメソッド[[] ':NilClass #/home/robert/.rvm/gems/ruby-2.4.0/gems/airborne-0.2.5/lib/airborne/path_matcher.rb :57: 'process_json ' –

+0

'/books'エンドポイントにヒットしてもらえますか? – 31piy

+0

"/ api/users"を127.0.0.1で開始しました。2017-01-23 12:18:20 +0100 ActiveRecord :: SchemaMigration Load(0.2ms)SELECT "schema_migrations"。* FROM "schema_migrations" Apiによる処理::: UsersController#index as XML パラメータ:{"user" => {}} フィルタチェーンが次のように停止しました:ensure_valid_accept_media_typeレンダリングまたはリダイレクト 完了406 406ms(ビュー:0.2ms | ActiveRecord:0.9ms) –

0

すでにで解決: FactoryGirl.create:

をAPIを記述する::がUserControllerは 'ON /ユーザーGET' 記述ん FactoryGirl.create( 'ジャック・マクルーア' 'ユーザー'、名前)を行う前に を行います( 'ユーザー'、名前: 'ジョニー死神') FactoryGirl.create( 'ユーザー'、名前: 'ニコBellic') 終了

it 'should return valid user' do 
    get :index, format: 'json' 
    expect_json('data.0.attributes', name: "Jack McClure") 
    expect_json('data.2.attributes', name: 'Niko Bellic') 
end 

エンド