4

我正在尝试为必须通过 https 运行的操作编写功能测试。我没有测试 HTTPS 重定向 - 我已经知道它可以从另一个测试中工作。

我想做的是:

get :new, :protocol => "https://"
assert_redirected_to :root

但这不会通过 https 发出请求。是否有允许我更改协议的“获取”选项?

另外,如果我尝试指定 url(例如:get "https:/test.host/do/something"),我会收到路由错误,因为在我的 rails 级别没有 https 的路由 - 它在我的网站上得到了处理服务器级别。

4

2 回答 2

8

我在这里找到了一个更简单的答案: http ://railspikes.com/2008/9/12/testing-ssl

这就是将以下行(a)放在需要 SSL 的每个功能测试的开头,或者(b)如果控制器中的每个操作都使用 SSL,则在“设置”方法中。

@request.env['HTTPS'] = 'on'

这会在所有请求之前添加 https

于 2010-10-04T02:30:17.597 回答
1

在功能测试中,没有来自 HTTP 或其他任何东西的路由,它直接使用控制器。因此,您无法测试来自 HTTP 或 HTTPS 的内容。

但是您可以模拟 request.protocole 并将其定义为“https”

request.stub(:protocol).and_return("https://")
get :new
于 2010-09-29T07:07:56.217 回答