添加Subdomain-fu和重定向功能后,Cucumber / webrat测试失败

时间:2009-12-24 19:56:11

标签: ruby-on-rails cucumber redirect webrat subdomain-fu

我在项目中添加了Subdomain-fu。在ApplicationController中我有before_filter,它检查url并将app.com重定向到www.app.com,www.subdomain.app.com到subdomain.app.com并检查帐户是否存在(如果不存在则重定向到home):

    before_filter :check_uri 

    def check_uri
      if !subdomain?
        redirect_to http_protocol + "www." + current_host + request.request_uri if !/^www\./.match(current_host)
      elsif /^www\./.match(current_host)
        redirect_to http_protocol + current_host.gsub(/^www\./, '') + request.request_uri
      elsif !account_subdomain?
        redirect_to http_protocol + "www" + current_host.gsub(account_subdomain, '')
      end
    end

上面的代码非常好用。但是在添加了这个片段后,我的Cucumber测试了,例如。这一个:

  Scenario: Successful sign up
    Given I am an anonymous user
    And an Accept Language header
    And I am on the home page
    When I follow "Join now!"
    And ...

因错误而失败:

Webrat::NotFoundError: Could not find link with text or title or id "Join now!"
(eval):2:in `/^I follow "([^\"]*)"$/'
features/manage_users.feature:10:in `When I follow "Join now!"'

如果我对before_filter发表评论,那么一切运作良好。 有人知道为什么吗?

1 个答案:

答案 0 :(得分:0)

我可以理解Webrat非常喜欢域名“example.com”,并用它来模仿所有步骤。

因此,如果您不使用子域,您可以写下您的步骤:

Before do
  host! "example.com"
end

并且所有重定向都应该有效(我不检查)。 随着Subdomain-fu,它甚至更加自然。你应该做的一切 - 正确配置你的subdomain-fu配置文件:

SubdomainFu.tld_sizes = {:development => 0,
                         :test => 1, # not 0, even if you use *.localhost in development
                         :production => 1}

并且在没有任何主机的情况下进行重定向测试! “example.com”即可。