我开始使用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
关于如何解决这个问题的任何线索?
答案 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