2011-02-09 72 views
17

我開始使用RSpec。我有一個新的rails 3應用程序,它使用HTTP_ACCEPT_HEADER或請求2字母子域來設置應用程序語言並相應地重定向。我正在使用Cucumber成功測試我的重定向代碼。設置http頭RSpec 2.4/Rails 3

現在我想寫我的控制器規格,我需要在我的測試之前設置請求子域。

在我的黃瓜的步驟,我可以指定:

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

但是,當我嘗試這樣做的規範文件

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

試試這個:

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

非常感謝!我已經嘗試過,但現在我意識到另一個代碼示例首先達到了我的調試點。 – gdelfino 2011-02-09 19:33:56

2

以前的答案是正確的,和一般的頭的名稱應該全部大寫,用前綴HTTP_,並用下劃線分開。例如,「如果-Modified-Since的」標頭可設置:

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

設置的HTTP標頭用於rspec的每一個請求也是可能的。添加到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