2013-08-20 5 views
10

Sieht aus wie ein Fehler in RSpec, aber vielleicht fehlt mir etwas.RSpec Anfrage Test meres Hashes in Array in POST JSON Parameter

I eine Anfrage spec haben, wo ich eine JSON hinterlassen, die ein Array von Hashes enthält:

spec/Anfragen/dummy_request_spec.rb:

post "http://my.server.com/some/route", { 
    format: :json, 
    data: [ 
    { 
     details: { 
     param1: 1 
     }, 
    }, 
    { 
     details: { 
     param2: 1 
     } 
    } 
    ] 
} 

Aus irgendeinem Grund übergeht RSpec die Hashes in ein Element und sendet sie dann an den Server. Druck aus params erhielt in der Steuerung:

data: [ 
    { 
    details: { 
     param1: 1, 
     param2: 2 
    }, 
    }, 
] 

Versionen: rspec-2.13.0 Schienen-3.2.10

Sehr seltsam !!

Danke

Antwort

19

Got it! Array von Hashes wird für Formulardaten nicht unterstützt.
RSpec stellt es standardmäßig als Formulardaten bereit. Lösung:

post '...', {...}.to_json, {'CONTENT_TYPE' => "application/json", 'ACCEPT' => 'application/json'} 
0

Beachten Sie außerdem, dass Sie ein zusätzliches Komma haben:

data: [ 
    { 
    details: { 
    param1: 1 
    }**,** 
    }, 
    { 
    details: { 
    param2: 1 
    } 
    } 
]