如何在Sinatra中使用rspec和机架测试测试标题

如何在Sinatra中使用rspec和机架测试测试标题,rspec,sinatra,rack,Rspec,Sinatra,Rack,所以我有一个Sinatra应用程序,它通过HTTP POST从另一个服务接收XML。我想在本地测试一下。我有一个发送到端点的测试XML文件。进展顺利。我还设置了一些标题,如下所示: post '/', xml, 'HTTP_X_MY_AWESOME_HEADER' => "It's value" 其中xml是发送到我的端点的普通xml的精确副本。但我作为参数传递的标题永远不会显示在输出中 我做错什么了吗? 这里有很多关于它的帖子,但都是过时的 我使用的是RSPEC2.8、Sinatra

所以我有一个Sinatra应用程序,它通过HTTP POST从另一个服务接收XML。我想在本地测试一下。我有一个发送到端点的测试XML文件。进展顺利。我还设置了一些标题,如下所示:

post '/', xml, 'HTTP_X_MY_AWESOME_HEADER' => "It's value"
其中
xml
是发送到我的端点的普通xml的精确副本。但我作为参数传递的标题永远不会显示在输出中

我做错什么了吗? 这里有很多关于它的帖子,但都是过时的

我使用的是RSPEC2.8、Sinatra 1.3.2、Ruby 1.9.3-p0、Rack::Test 0.6.1

更新2012-01-28 11:37:显然我问这个问题时没有思考。发送带有请求的标题并不意味着我将在响应中收到它们


所以现在的问题是:如何在不将请求头与响应一起发送回去的情况下测试请求头?

您应该能够像这样检查最后一个请求:

last_request.env["HTTP_X_MY_AWESOME_HEADER"]
使用RSpec&上面的示例,您可以使用以下各项进行测试:

last_request.env["HTTP_X_MY_AWESOME_HEADER"].should == "It's value"
希望你能得到绿灯:)

更多信息请点击此处:


HTH

发送带有请求的头并不意味着我可以得到这些头的响应。因此,
last\u response
不必包含
HTTP\u X\u MY\u AWESOME\u头
-头