我应该如何在Rails开发中测试与请求相关的逻辑?

时间:2009-12-04 05:04:19

标签: ruby-on-rails

我在应用程序控制器中定义了几个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上浏览网站,我无法确保上述代码在我的浏览器中运行 - 我必须将其推向生产,希望它能够正常工作并希望它不会弄乱任何东西在此期间的任何人,这让我很紧张。还有其他选择吗?

2 个答案:

答案 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上运行。 希望有所帮助。