2010-07-23 4 views
7

J'essaie actuellement de mettre en place des tests d'intégration/acceptation pour une nouvelle application de rails 3 avec du concombre et du capybara. (Je d'abord raboté à utiliser Webrat, mais il semble qu'il ne supporte pas les rails 3, donc j'ai fini avec capybara)Comment suivre une redirection après click_link/button avec concombre et capybara dans les rails?

J'essaie d'obtenir un travail de test de connexion de base:

Feature: Login user 
    In order to access the non-public parts of the site, 
    as a user, 
    I want to login to the site 

Scenario: login with valid credentials 
    Given I am on the login page 
    When I fill in "Email" with "[email protected]" 
    And I fill in "Password" with "pass" 
    And I press "Login" 
    Then I should be on the users home page 
    And I should see "Login successful" 

Le problème est maintenant, que le formulaire de connexion m'envoie à /user_session qui me redirige ensuite vers la maison des utilisateurs /home. Le concombre ne suit pas la redirection qui provoque l'échec de la ligne Then I should be on the users home page.

Comment puis-je dire à cucumber/capybara de suivre la redirection afin que je sois sur la bonne page après avoir appuyé sur un bouton de suivre un lien?

Il semble y avoir une méthode follow_redirect! dans le pilote rack_test que j'utilise, mais elle est privée et je n'ai aucune idée de la manière d'appeler cette fonctionnalité.

merci à l'avance,
Simon

Répondre

14

Capybara suit automatiquement les redirections. Quelque chose d'autre est cassé.

+0

C'est la réponse que je craignais le plus, mais j'ai aussi entendu cela d'une autre source. Besoin d'enquêter que ... –

+0

d'oh! Quelque chose n'allait pas avec mes données de test. Pas étonnant que ça n'ait pas marché si l'utilisateur n'existait pas dans la base de données. Merci pour l'aide! –

+3

C'est Capybara qui suit les redirections. Rack :: Test ne fait que suivre la redirection si vous appelez 'follow_redirect!': http://rdoc.info/github/brynary/rack-test/master/Rack/Test/Session – Timo

1

Quelque chose qui pourrait fonctionner permute l'ordre des déclarations:

Then I should see "Login successful" 
And I should be on the users home page 

Ensuite, la vérification de la page en cours se produira après la vérification pour le texte de la page . Les tests de concombre exigent beaucoup de débogage, bonne chance!

6

Ajouter ce dans vos étapes:

When /^I dump.* the response$/ do 
    puts body 
end 

Ensuite, lorsque vos tests se comportent mal, vous pouvez ajouter « Et je vider la réponse » à vos pas et de voir où il va avec les réoriente ou autre chose.

+1

truc cool, sauver beaucoup de travail de débogage, thx – astropanic

Questions connexes