2011-02-09 2 views
17

私はRSpecを使い始めています。私はアプリケーションの言語を設定し、それに応じてリダイレクトするために、HTTP_ACCEPT_HEADERまたはリクエスト2文字のサブドメインを使用する新しいレール3アプリケーションを持っています。キュウリを使ってリダイレクションコードをテストしています。httpヘッダーを設定するRSpec 2.4/Rails 3

コントローラの仕様を書きたいので、テストの前にリクエストサブドメインを設定する必要があります。

私のキュウリ工程において

、私は指定することができます。

header 'HTTP_HOST', 'es.mysite.local' 
visit '/' 

をしかし、私はspecファイルでこれをやろう

header 'HTTP_HOST', 'es.mysite.local' 
get 'index' 

私はこのエラーを取得する:

Failure/Error: header 'HTTP_HOST', "es.mysite.local" 
LoadError: 
    no such file to load -- action_controller/integration 

これを解決するための手掛かりはありますか?

答えて

30

この試し:前の回答が正しいこと、そして一般的にヘッダの名前をすべて大文字にする必要があり、HTTP_接頭辞、および下線で分離

request.env['HTTP_HOST'] = 'es.mysite.local' 
get 'index' 
+0

ありがとうございました!私はすでにそれを試していましたが、今度は別のコード例が最初にデバッグポイントに到達していることを認識しました。 – gdelfino

+0

ありがとう!今日はRails 3.0.7で動作し、どこにでもサブドメインを持つ完全なURLを置くことを避けました。 –

2

を。 「修飾場合-ので」例えばヘッダで設定することができる。

request.env['HTTP_IF_MODIFIED_SINCE'] = Time.now.httpdate 
0

RSpecの中のすべてのリクエストのHTTPヘッダーを設定することも可能です。 RSpec.configure do |config|ブロック内のspec_helperに追加:

config.before(:each) do |x| 
    x.request.env['HTTP_ACCEPT_LANGUAGE'] = 'de-CH,de;q=0.8,en;q=0.6' 
end