Bre*_*din 2 ruby rspec sinatra
我希望Rspec使用https请求root.这就是我目前拥有的:
it "requesting root (/) with HTTPS should return 200" do
get "https://test.host/"
last_response.should be_ok
end
Run Code Online (Sandbox Code Playgroud)
尝试在RSpec Rails中测试HTTPS(SSL)请求中提出的解决方案会返回以下错误:
wrong number of arguments (0 for 1)
Run Code Online (Sandbox Code Playgroud)
我想我可以这样做:
get "/", :https => "on"
Run Code Online (Sandbox Code Playgroud)
有没有办法在不指定主机的情况下请求root用户?
使用Sinatra和RSpec时,您使用的是#get/#post提供的方法Rack::Test,因此我建议您查看它们的工作原理:https://github.com/brynary/rack-test/blob/master/lib/rack/test. RB
如您所见,它们采用可选的envHash,您可以将"HTTPS"设置为"on",如下所示:
get '/', {}, {'HTTPS' => 'on'}
Run Code Online (Sandbox Code Playgroud)
如果你想默认为你的所有请求设置它,你需要覆盖该Rack::Test::Session#default_env方法,并且必须'HTTPS' => 'on'这样做(我建议你这样做spec_helper.rb),如下所示:
class Rack::Test::Session
def default_env
{ "rack.test" => true, "REMOTE_ADDR" => "127.0.0.1", "HTTPS" => 'on' }.merge(headers_for_env)
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2010 次 |
| 最近记录: |