2009-12-24 14 views
0

J'ai ajouté Subdomain-fu dans mon projet. Dans ApplicationController j'ai before_filter qui vérifie url et redirige app.com vers www.app.com, www.subdomain.app.com vers subdomain.app.com et vérifie l'existence du compte (redirige vers la maison s'il n'existe pas):Le test concombre/webrat échoue après l'ajout de la fonctionnalité Subdomain-fu et redirection

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 

Le code ci-dessus fonctionne plutôt bien. Mais après avoir ajouté cet extrait mes tests de concombre, par ex. celui-ci:

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 ... 

est devenu échouer avec l'erreur:

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!"' 

Si je commente ce tout before_filter fonctionne bien. Est-ce que quelqu'un sait pourquoi?

Répondre

0

Je pourrais comprendre que Webrat aime le domaine "example.com" très profondément et émule tout le pas avec lui.

Donc, si vous n'utilisez pas sous-domaines, vous pouvez écrire dans vos démarches:

Before do 
    host! "example.com" 
end 

et tous vos redirections devez travailler (je ne vérifie pas). Avec Subdomain-fu, c'est encore plus facile. Tout ce que vous devez faire - pour configurer votre fichier de configuration sous-domaine-fu correctement:

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

et des tests avec le travail de redirection sans hôte ! "example.com".