如何在Sinatra中使用rspec和rack-test测试头文件

Iva*_*van 8 rack rspec sinatra

所以我有一个Sinatra应用程序,通过来自其他服务的HTTP POST接收XML.我想在本地测试它.我有一个测试XML文件,我发送到端点.这很顺利.我还设置了一些像这样的标题:

post '/', xml, 'HTTP_X_MY_AWESOME_HEADER' => "It's value"
Run Code Online (Sandbox Code Playgroud)

其中xml是发送到我的端点的普通XML的确切副本.但我作为参数传递的标题永远不会显示在输出中.

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

我正在使用Rspec 2.8,Sinatra 1.3.2,Ruby 1.9.3-p0,Rack :: Test 0.6.1.

更新2012-01-28 11:37:当我问这个问题时,我显然没有想到.使用请求发送标头并不意味着我会在响应中收到它们.

所以现在的问题是:如何测试请求标头而不将其与响应一起发回?

gef*_*gef 4

您应该能够像这样检查 last_request :

last_request.env["HTTP_X_MY_AWESOME_HEADER"]
Run Code Online (Sandbox Code Playgroud)

使用 RSpec 和上面的示例,您将测试:

last_request.env["HTTP_X_MY_AWESOME_HEADER"].should == "It's value"
Run Code Online (Sandbox Code Playgroud)

希望你能获得绿灯:)

更多信息请访问: http://www.sinatrarb.com/testing.html#asserting_expectations_about_the_response

华泰

  • 通过请求发送标头并不意味着我会得到这些标头作为响应。因此 `last_response` 不必包含 `HTTP_X_MY_AWESOME_HEADER` 标头 (3认同)