2017-01-23 5 views
0

Hallo, ich habe Probleme beim Testen von JSONAPI mit rspec und airborne. GET-Modell unter https://i.stack.imgur.com/Cyf75.pngJSONAPI testet mit rspec und Airborne

Im Test es auf diese Weise https://i.stack.imgur.com/Y9rHt.png

Rspec Ausgabe:

Failures: 1) GET/Kontakte sollten Typen Ausfall/Fehler bestätigen: expect_json ('books.0 ‘, Titel: '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' 

Finished in 0,03121 Sekunden (Dateien nahmen 0,17681 Sekunden bis loa d) 1 Beispiel, 1 Fehler

+0

Bitte Postleitzahl statt Links zu Screenshots. –

+0

Ich kann das nicht tun, führen zu niedrig rep –

Antwort

0

Ihre API-Antwort enthält nicht den Schlüssel books. Stattdessen gibt es die Antwort als { "data": [ ... ] } zurück.

In Ihren Tests müssen Sie also expect_json('data.0', ...) statt expect_json('books.0', ...) angeben.

Ich hoffe, dass dieses Problem behoben werden sollte.

+0

1) GET/users gültigen Typen zurückgeben sollte Ausfall/Fehler: expect_json ('data.1', Name: "Jack McClure") Airborne :: PathError: Erwartete NilClass um ein Objekt mit der Eigenschaft zu sein 1 1) GET on/Benutzer sollten gültige Typen zurückgeben Fehler/Fehler: expect_json ('data.1', Name: "Jack McClure") # --- Verursacht von: - - # NoMethodError: # undefinierte Methode '[] 'für 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

Können Sie sicherstellen, dass der'/books'-Endpunkt erreicht wird? – 31piy

+0

Begann GET "/ api/users" für 127.0.0.1 am 2017-01-23 12:18:20 +0100 ActiveRecord :: SchemaMigration Laden (0.2ms) SELECT "schema_migrations". * FROM "schema_migrations" Verarbeitung von Api :: UsersController # index als XML Parameter: {"user" => {}} Filterkette angehalten als: ensure_valid_accept_media_type gerendert oder umgeleitet Abgeschlossen 406 Nicht akzeptabel in 201ms (Views: 0.2ms | ActiveRecord: 0.9ms) –

0

Bereits lösen mit:

Api beschreiben :: Userscontroller do beschreiben 'GET auf/users' tun, bevor FactoryGirl.create tun ('user', name: 'Jack McClure') FactoryGirl.create ('user', name: 'Johny Reaper') FactoryGirl.create ('user', name: 'Niko Bellic') Ende

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 

Ende

Verwandte Themen