2012-01-26 10 views
7

私は別のサービスからHTTP POST経由でXMLを受け取るSinatraアプリを持っています。私はそれをローカルでテストしたい。私はエンドポイントに送信するテストXMLファイルを持っています。それはうまくいく。 xmlは私のエンドポイントに送信されている通常のXMLの正確なコピーであるSinatraでrspecとラックテストを使ってヘッダをテストする方法

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

:私はまた、このようないくつかのヘッダーを設定します。しかし、私がパラメーターとして渡すヘッダーは決して出力に表示されません。

ここで何か問題がありますか? ここにはたくさんの投稿がありますが、すべて古くなっています。

私はRspec 2.8、Sinatra 1.3.2、Ruby 1.9.3-p0、Rack :: Test 0.6.1を使用しています。

更新2012-01-28 11:37:明らかに私はこの質問をしている間は考えていませんでした。リクエストでヘッダーを送信しても、返信で返信されるわけではありません。

これで質問は次のようになります。リクエストヘッダーを返信せずにテストするにはどうすればよいですか?

答えて

4

あなたはlast_requestので、同じように検査することができる必要があります:あなたの上のあなたの例では、テストでしょうRSpecの&使用

last_request.env["HTTP_X_MY_AWESOME_HEADER"] 

と:

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

そして、うまくいけば、あなたは緑色の光を得られます。 )

詳細情報: http://www.sinatrarb.com/testing.html#asserting_expectations_about_the_response

HTH

+2

リクエストでヘッダーを送信しても、そのヘッダーが返されるわけではありません。したがって、 'last_response'には' HTTP_X_MY_AWESOME_HEADER'-headerを含める必要はありません – Ivan

+0

もちろんです。更新された答え:) – gef

関連する問題