首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在RSpec Rails中测试HTTPS请求

在RSpec Rails中测试HTTPS请求
EN

Stack Overflow用户
提问于 2011-07-22 11:12:01
回答 3查看 10.2K关注 0票数 20

我想利用rails 3.1rc4中的force_ssl feature

代码语言:javascript
复制
class ApplicationController < ActionController::Base
  force_ssl
end

问题是这破坏了我大部分/所有现有的RSpec控制器规范。例如,这将失败:

代码语言:javascript
复制
describe "GET 'index'" do
  it "renders the Start page" do
    get :index
    response.should render_template 'index'
  end
end

响应是301重定向到https://test.host/,而不是呈现页面。

如何更改我的规范以模拟HTTPS GET/POST?

我是否必须手动更改每个测试,或者是否有更简单的方法?(我意识到我只能在生产环境中调用force_ssl,但这并不理想。实际上,我应该测试一下,force_ssl确实在预期的时候重定向到了https://。)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-29 10:18:15

要指示RSpec在控制器规范中发出SSL请求,请使用:

代码语言:javascript
复制
request.env['HTTPS'] = 'on'

在您的示例中,如下所示:

代码语言:javascript
复制
describe "GET 'index'" do
  it "renders the Start page" do
    request.env['HTTPS'] = 'on'
    get :index
    response.should render_template 'index'
  end
end
票数 44
EN

Stack Overflow用户

发布于 2015-02-06 16:28:33

对于rspec 3语法,请使用https://stackoverflow.com/a/28361428/1107433

代码语言:javascript
复制
get :index, protocol: 'https://'

可能有一个略有不同的版本,上面的代码不能工作。所以使用下面的代码:

get :index, protocol: :https

票数 2
EN

Stack Overflow用户

发布于 2011-07-22 11:16:26

如果您在应用程序中的任何位置都需要SSL,那么您应该在应用程序中的任何地方使用它。然后,您需要做的就是使用rack-ssl gem并将Rack::SSL中间件添加到config/environments/production.rb中。不需要额外的测试;没有损坏;问题解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6785261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档