2009-09-23 15 views
10

J'apprends le concombre et le Webrat avec Rails et je voudrais des conseils sur la meilleure façon de tester un formulaire de «modification». Lorsque je navigue vers le profil d'un utilisateur, un formulaire d'édition s'affiche avec les informations de l'utilisateur pré-renseignées dans les champs du formulaire. Je voudrais pouvoir tester que les champs contiennent effectivement les informations que j'attends. Voici mon scénario:Comment puis-je vérifier qu'un formulaire est pré-rempli avec des valeurs en utilisant Cucumber et Webrat?

Scenario: View My Profile 
    Given I am logged in as "Mike" with password "secret" 
    When I go to my profile page 
    Then I should see "Mike" in the "Login" field 
    And I should see "[email protected]" in the "Email" field 
    And I should see a blank "Password" field 
    And I should see a blank "Password confirmation" field 

concombre me dit, à juste titre, que je dois définir les étapes personnalisées suivantes:

Then /^I should see "([^\"]*)" in the "([^\"]*)" field$/ do |arg1, arg2| 
    pending 
end 

Then /^I should see a blank "([^\"]*)" field$/ do |arg1| 
    pending 
end 

Je suis sûr que je peux comprendre un peu regex méchant pour mettre en œuvre l'évaluation de ces étapes , mais je pense qu'il doit y avoir quelque chose de déjà existant ou de plus élégant que je puisse faire. Comment évaluez-vous les formulaires avec des données pré-remplies dans les champs de formulaire?

Répondre

15

Jetez un oeil à caractéristiques/step_definitions/webrat_steps.rb, la définition de l'étape suivante ressemble à ce que vous recherchez:

Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value| 
    field_labeled(field).value.should =~ /#{value}/ 
end 
+0

Dang. Je ne sais pas comment j'ai raté ça! Sur cette base, j'ai créé une version qui fonctionne pour les champs vides. Comme dans/^ le champ "([^ \"] *) "devrait être vide $ /" étant implémenté comme "field_labeled (field) .value.should == nil". Merci! end' – SingleShot