代码之家  ›  专栏  ›  技术社区  ›  PreciousBodilyFluids

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

  •  0
  • PreciousBodilyFluids  · 技术社区  · 15 年前

    我在应用程序控制器中定义了几个before_过滤器来处理我不喜欢的请求。一个具有代表性的例子是:

    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
    

    因此,有两个问题:

    第一,我应该如何测试这个功能?到目前为止,我使用的唯一测试框架是Cucumber+Webrat,它并不是真正用来处理这种事情的。有没有其他框架我也应该用来伪造这样的请求?

    第二,我有没有办法在我的开发环境中自己尝试这个功能?由于我只是在localhost:3000上浏览网站,我无法确保上面的代码在我的浏览器中正常工作——我不得不将其推向生产,希望它能正常工作,同时希望它不会给任何人带来任何麻烦,这让我感到紧张。还有别的选择吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Lytol    15 年前

    在功能测试中,可以显式设置请求主机。我不确定您喜欢什么样的测试框架,所以这里有一个好的ole'Test::Unit中的示例。

    def test_should_redirect_to_non_www
      @request.host = 'www.mydomain.com'
      get :index
      assert_redirected_to 'http://mydomain.com/'
    end
    
        2
  •  0
  •   NM.    15 年前


    您可以在主机文件中添加条目,以便www.mydomain.com指向您的本地主机,然后在您的开发环境中测试逻辑。 您可以尝试使用passenger托管它,以便它在apache上工作。