设置http标头RSpec 2.4 / Rails 3

时间:2011-02-09 16:53:29

标签: ruby-on-rails rspec cucumber webrat

我开始使用RSpec了。我有一个新的rails 3应用程序,它使用HTTP_ACCEPT_HEADER或请求2个字母的子域来设置应用程序语言并相应地重定向。我使用Cucumber成功测试了我的重定向代码。

现在我想编写我的控制器规范,我需要在测试之前设置请求子域。

在我的黄瓜步骤中,我可以指定:

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

关于如何解决这个问题的任何线索?

3 个答案:

答案 0 :(得分:30)

试试这个:

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

答案 1 :(得分:2)

前面的答案是正确的,通常标题的名称应该全部大写,前缀为HTTP_,并用下划线分隔。例如,“If-Modified-Since”标题可以设置为:

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

答案 2 :(得分: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