2010-03-22 10 views
2

Je dois tester un champ de saisie semi-automatique avec du concombre. Comment puis je faire ça? J'ai essayéTest autocomplete des rails de test avec concombre

Scenario: Using Autocomplete 
    Given I am on the home page 
    And there are the following users: 
    |id |name | 
    |1 |foo | 
    When I fill in "name" with "f" 
    Then I should see "foo" 

Mais alors il échoue car attendu le contenu de l'élément suivant à inclure "foo". Des idées?

Répondre

0

La saisie semi-automatique utilise Javascript pour définir la valeur d'un champ de texte ("nom" dans votre cas). Puisque Cucumber utilise Webrat pour inspecter la réponse revenant du serveur, et que Webrat ne supporte pas Javascript, votre scénario échoue. Le concombre peut utiliser Selenium pour automatiser les tests Javascript et vérifier que les valeurs attendues sont bien branchées. Plus d'infos here.

5

Vous devez utiliser un pilote compatible JS pour votre test. Si vous utilisez webrat o capybara, vous pouvez essayer d'utiliser le sélénium. Cela ne fonctionne pas avec l'étape Web par défaut, car le DOM n'a pas été mis à jour lorsqu'il recherche le texte. Il y a 2 options:

Option 1: Attendez

And I wait for 1 second 
Then I should see "foo" 

Vous devez mettre en œuvre cette étape pour appeler le sommeil (n)

Option 2: localiser sur mesure

Capybara de La méthode locate va voir si la cible est présente dans le DOM. Si ce n'est pas le cas, il attendra quelques secondes et réessayera et enverra une erreur si elle n'est toujours pas présente.

Then I should see the following autocomplete options: 
| foo | 

Voici comment la mise en œuvre des étapes ressemble pour moi:

Then /^I should see the following autocomplete options:$/ do |table| 
    table.raw.each do |row| 
    locate(:xpath, "//a[text()='#{row[0]}']") 
    end 
end 

Si vous avez besoin de plus amples informations sur ce sujet, je l'ai écrit un blogpost avec des exemples et quelques extraits, traitant également en cliquant sur les options de saisie semi-automatique présentées:

http://www.aentos.com/blog/testing-ajax-autocomplete-fields-cucumber-and-capybara