2012-01-26 14 views
7

Quindi ho un'app Sinatra che riceve un XML tramite un POST HTTP da un altro servizio. Voglio testarlo localmente. Ho un file XML di prova che invio all'endpoint. Va bene Ho anche impostare alcune intestazioni in questo modo:Come testare le intestazioni con rspec e test su rack in Sinatra

post '/', xml, 'HTTP_X_MY_AWESOME_HEADER' => "It's value" 

dove xml è la copia esatta di XML normale che viene inviato al mio punto finale. Ma l'intestazione che passo come parametro non viene mai visualizzata in output.

Sto facendo qualcosa di sbagliato qui? Ci sono molti post qui intorno, ma tutti sono obsoleti.

Sto usando Rspec 2.8, Sinatra 1.3.2, Ruby 1.9.3-p0, Rack :: Test 0.6.1.

UPDATE 2012-01-28 11:37: Ovviamente non stavo pensando mentre stavo facendo questa domanda. L'invio di intestazioni con richiesta non significa che le riceverò di nuovo nella risposta.

Quindi la domanda ora è: come posso testare le intestazioni delle richieste senza inviarle di nuovo con la risposta?

risposta

4

Si dovrebbe essere in grado di ispezionare il last_request in questo modo:

last_request.env["HTTP_X_MY_AWESOME_HEADER"] 

utilizzando RSpec & il tuo esempio di cui sopra si potrebbe provare con:

last_request.env["HTTP_X_MY_AWESOME_HEADER"].should == "It's value" 

E si spera si otterrà una luce verde:)

Maggiori informazioni qui: http://www.sinatrarb.com/testing.html#asserting_expectations_about_the_response

HTH

+2

inviare intestazioni con richiesta non significa che ottengo quelle intestazioni indietro in risposta. Quindi 'last_response' non deve contenere 'HTTP_X_MY_AWESOME_HEADER'-header – Ivan

+0

Naturalmente. Risposta aggiornata :) – gef

Problemi correlati