2009-11-25 4 views
1

Je voulais juste obtenir quelques opinions sur la façon de tester une forme extrêmement longue avec plus de 20 champs obligatoires. Il semble que mon scénario de concombre pourrait être de 25 lignes si j'essayais de décrire chaque champ qui doit être rempli (quelque chose comme "Et je remplis" Nom: "avec bla, Et je remplis" Adresse "avec foo,Conseils sur le test de la forme extrêmement longue avec plus de 20 champs obligatoires, en utilisant Rspec/Cucumber

Si je dis simplement "quand je fournis toutes les informations requises" comme l'une des étapes du concombre - il semble un peu vide, mais il garde les choses propres.J'utilise ensuite Factory Girl pour créer une usine pour représenter un objet valide, pour tester dans les étapes de concombre et les spécifications du modèle plus je spécifications du modèle pour vous assurer que tous les champs obligatoires sont inclus dans la création du nouvel objet

question # 1 -..? cela suffit-il

Question # 2 - Si j'ai plus de 20 champs obligatoires (ce formulaire recueille beaucoup de renseignements personnels sur les contacts et l'historique), écrivez-vous plus de 20 tests dans votre test de modèle rspec pour vous assurer que chacun de ces champs est correctement pris en compte?

Je sais que je triché, poser 2 questions ..;)

Répondre

2

Vous voulez tester que, lorsqu'un utilisateur remplit le formulaire et appuie sur « Soumettre » que l'application fait la bonne chose sur la base des informations fournies , droite?

En supposant que vous travaillez sur une application de rails à l'aide du combo classique Cuke + Webrat, vous pouvez le faire:

Background: Login, go to really long form 
    Given the user "Fred exists" # Factory a user into existance, something like @user = Factory(:user, :username => "Fred" 
    And I am on the "Really long form" page # map "Really long form page" in /features/supposrt/paths.rb 

Scenario: Succesfully fill in really long form 
    When I fill in the following: # This is defined in Webrat steps 
    | field 1 | response 1 | 
    | field 2 | response 2 | 
... 
    | field 19 | response 19 | 
    | field 20 | response 20 | 

    And I press "Save" 
    Then I should see a "success" message # assert there is a div with the calss success. Could be an error message 
    And "Fred" should have a valid set of attributes # because you defined @user, you can call whatever assertions you like here i.e. assert equal @user.username, "Fred" (I forget the correct syntax for doing this, but you get the idea). 

Est-ce que l'aide?

0

Je pense que vous voulez que votre test remplisse réellement tous les champs, pour s'assurer que tous les champs sont réellement présents sur le formulaire et accepteront des données valides. En supposant que certains champs soient obligatoires et d'autres optionnels, j'aurais probablement trois tests: un qui remplit tous les champs, un qui ne remplit que le champ requis et un qui omet l'un des champs requis. Peut-être un quatrième test pour couvrir la soumission du bouton sans champs du tout rempli si cela semble utile. Cela devrait vous assurer que vous n'avez pas besoin de trop de champs, et peut vous avertir de changer la vue si vous changez le modèle pour exiger plus de champs ou moins de champs, et vous assurer que vous pouvez afficher un message d'erreur si un champ requis est manquant. Mais vous pouvez enregistrer les exigences de champ individuelles pour les spécifications du modèle.

Questions connexes