2011-12-19 2 views
0

J'intègre capybara à un projet. En première instance, je voulais juste vérifier ce qui affiche la page de connexion, donc je fait ce code:RoutingError sur capybara avec rubycas

require 'acceptance/acceptance_helper' 
feature 'Login' do 
    scenario 'sign in with right credentials' do 
    visit '/' 
    save_and_open_page 
    end 
end 

Mais quand je lance le test, il me montre:

Failure/Error: visit '/' 
ActionController::RoutingError: 
    No route matches "/login" 
# ./spec/acceptance/login_spec.rb:6 

Si j'entre à l'application sans une session valide, il me redirige (code 302) vers un serveur Rubycas pour me connecter (qui a le contexte/login au démarrage) et après cela, il me redirige à mon serveur. Que dois-je faire pour afficher simplement la page de connexion ou comment gérer les références de redirection dans capybara?

Répondre

1

que je fais habituellement ceci:

intérieur de mon test.rb:

require 'casclient' 
    require 'casclient/frameworks/rails/filter' 

    CASClient::Frameworks::Rails::Filter.configure(
     :cas_base_url => cas_base_url 
) 

Modifier vos spécifications comme ceci:

CASClient::Frameworks::Rails::Filter.fake(username) 
    visit '/' 

Faites-moi savoir si cela fonctionne pour vous.

============================================== =========================================

Sans utiliser "CASClient :: Frameworks :: Rails :: Filter.fake (nom d'utilisateur) "J'ai aussi la même erreur. La raison est que cas vous redirige vers son URL de base avec "/login?service=http%3A%2d%2Fwww.example.com%aF" un paramètre comme celui-ci. Et par conséquent, il se plaint de l'absence de route.

  • Vérifiez votre journal de test
0

Assurez-vous d'avoir ajouté les itinéraires appropriés. il semble que vous manquiez des routes.

J'espère que cela vous aide.

Pour les itinéraires d'écriture, vous pouvez obtenir de l'aide de http://railscasts.com/episodes/79-generate-named-routes

+0

Mais '/ login' est pas une voie valable sur ma demande, est une route du système d'authentification (rubycas-sever) qui se trouve dans une autre application et adresse. Par exemple, si j'entre dans mon application (http: // localhost: 3000) et que je n'ai pas de session, elle me redirige instantanément vers le serveur d'authentification (http: //www.authserver.com/login? .) Voici donc la page de connexion et après me connecter, elle me redirige vers localhost. Pourquoi ajouter '/ login' comme route valide sur mon application? –

+0

quelque chose que vous assurez est que, capybara ne remplit pas les champs ne font pas partie de celui-ci, par exemple, vous visitez une page facebook à distance et tapez remplir alors il ne fonctionnera pas. vous devez exécuter des cas de test sur l'hôte local au lieu d'autres sites Web. –