我正在尝试为必须在https上运行的操作编写功能测试。我没有测试HTTPS重定向 - 我已经知道这可以从另一个测试开始。
我要做的是:
get :new, :protocol => "https://"
assert_redirected_to :root
但是这不会通过https发出请求。是否有“get”选项可以让我更改协议?
另外,如果我尝试指定url(例如:get“https:/test.host/do/something”),我会收到路由错误,因为我的rails级别没有针对https的路由 - 它已经处理好了在我的网络服务器级别。
答案 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