我在应用程序控制器中定义了几个before_filters来处理我不喜欢的请求。一个代表性的例子是:
before_filter :reject_www
private
def reject_www
if request.subdomains.include? 'www'
redirect_to 'http://example.com' + request.path, :status => 301
false
end
end
(返回false跳过任何后续的before_filters,只是立即返回重定向)
所以,有两个问题:
一,我该如何测试这个功能?到目前为止我唯一使用的测试框架是Cucumber + Webrat,它并没有真正设置来处理这种事情。是否还有其他框架我也应该用来伪造这样的请求?
二,有没有什么方法可以在我的开发环境中自己尝试这个功能?由于我只是在localhost:3000上浏览网站,我无法确保上述代码在我的浏览器中运行 - 我必须将其推向生产,希望它能够正常工作并希望它不会弄乱任何东西在此期间的任何人,这让我很紧张。还有其他选择吗?
答案 0 :(得分:1)
在功能测试中,您可以显式设置请求主机。我不确定你喜欢哪种测试框架,所以这里有一个好的'测试::单元。
的例子def test_should_redirect_to_non_www
@request.host = 'www.mydomain.com'
get :index
assert_redirected_to 'http://mydomain.com/'
end
答案 1 :(得分:0)
解决#2
您可以在hosts文件中添加条目,以便www.mydomain.com指向本地主机,然后在开发环境中测试逻辑。
您可以尝试使用乘客托管它,以便它可以在apache上运行。
希望有所帮助。