2011-02-09 116 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