2012-01-26 12 views
7

Tengo una aplicación Sinatra que recibe un XML a través de un HTTP POST desde otro servicio. Quiero probarlo localmente Tengo un archivo XML de prueba que envío al punto final. Eso va bien Asimismo, establecer algunas cabeceras como esto:Cómo probar los encabezados con rspec y prueba en rack en Sinatra

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

donde xml es la copia exacta de XML normal que se está enviando a mi punto final. Pero el encabezado que paso como parámetro nunca se muestra en la salida.

¿Estoy haciendo algo mal aquí? Hay muchas publicaciones al respecto, pero todas están desactualizadas.

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

ACTUALIZACIÓN 2012-01-28 11:37: Obviamente no estaba pensando mientras hacía esta pregunta. Enviar encabezados con la solicitud no significa que los recibiré en la respuesta.

Así que la pregunta ahora es: ¿Cómo puedo probar los encabezados de solicitud sin enviarlos de vuelta con la respuesta?

Respuesta

4

Usted debe ser capaz de inspeccionar el last_request así:

last_request.env["HTTP_X_MY_AWESOME_HEADER"] 

usando RSpec & el ejemplo anterior se podría probar con:

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

Y es de esperar que obtendrá una luz verde:)

Más información aquí: http://www.sinatrarb.com/testing.html#asserting_expectations_about_the_response

HTH

+2

enviar encabezados con la solicitud no significa que los recibo en respuesta. Por lo tanto, 'last_response' no tiene que contener' HTTP_X_MY_AWESOME_HEADER'-header – Ivan

+0

Por supuesto. Respuesta actualizada :) – gef

Cuestiones relacionadas