功能测试“获取”请求和https协议

时间:2010-09-29 01:59:54

标签: ruby-on-rails get functional-testing

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

我要做的是:

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

但是这不会通过https发出请求。是否有“get”选项可以让我更改协议?

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

2 个答案:

答案 0 :(得分:8)

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

将以下行放在(a)每个功能测试开始时需要SSL,或者(b)在'setup'方法中,如果控制器中的每个操作都使用SSL。

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

这会以https

为前缀

答案 1 :(得分:1)

在功能测试中,没有来自HTTP或其他任何路由,它直接使用控制器。因此,您无法通过HTTP或HTTPS进行测试。

但你可以模拟request.protocole dans定义它像'https'

request.stub(:protocol).and_return("https://")
get :new