2011-09-07 4 views
4

Une partie du développement de mon projet a été fait. Notre société me demande d'écrire des cas de test de concombre pour le code développé et pour le développement à venir. Le fichier routes a deux sous-domaines pour admin et hosts.Devise est également en cours d'utilisation.sous-domaine, test utilisant du concombre ou capybara et rspec

concombre Maintenant, je l'ai installé et ont écrit le premier scénario pour la première histoire lorsque les terres de l'utilisateur non registerd sur la page d'accueil, entre un email valide et est redirigé vers la page suivante page..the n'a aucun mot de passe champ.

Scenario: Non registered user lands on beta home page. 
Given: I am on the homepage 
When: I enter valid email with "[email protected]". 
Then: I should be redirected to request invitation page. 

Le problème est dans mon dossier de routes, j'ai,

constraints :subdomain => ADMIN_SUBDOMAIN do 
    .... 
    root :to => admin#index 
end 
constraints :subdomain => HOST do 
    ... 
    root :to => home#index. 
end 

Maintenant, comment puis-je spécifier le fichier path.rb pour rechercher le root_path dans ce sous-domaine spécifique. Theres aucun mot-clé écrit en dehors des contraintes de sous-domaine. C'est ma première fois avec des tests. Je suis vraiment coincé là-dessus. Toute aide est profondément appréciée.

Je viens de savoir par quelqu'un que cela peut être mis en œuvre en utilisant capybara.Si oui, pourriez-vous s'il vous plaît donner une petite idée à ce sujet.

Répondre

6

Il s'est avéré que c'était plutôt simple. Capybara fournit une méthode default_host. Je viens donc nécessaire de mentionner,

When I visit subomain sub 

Et puis le webstep


Given /^I visit subdomain (.*)$/ do |site_domain| 

    site_domain = "http://sub.example.com" if site_domain == "admin" 

    Capybara.default_host = site_domain 
    visit "/" 
end 

Mise à jour:

default_host n'est pas censé être utilisé comme il est pas mentionné dans les docs. Essayez plutôt d'utiliser le chemin absolu dans la visite.

Given /^I visit subdomain (.*)$/ do |site_domain| 

    site_domain = "http://sub.example.com" if site_domain == "admin" 
    visit site_domain 
end 
+0

Que Dieu vous bénisse: D – imderek

+0

Parfait, mais la session ne fonctionne pas à travers les sous-domaines. Comment puis-je modifier le domaine de cookie à un type "tous sous-domaine" (.example.com)? –

Questions connexes