-
Notifications
You must be signed in to change notification settings - Fork 8
Capybara
Dans cette section, vous allez devoir indiquer comment tester les différentes étapes d'un scénario (ce que vous n'aviez pas eu à faire dans le scénario précédent puisque vous aviez copié-collé toutes les étapes d'un autre scénario en changeant seulement les données).
Maintenant que vous avez bien compris le cycle du TDD, nous pouvons nous en écarter temporairement : nous allons tester une fonctionnalité existante (#32:Assign an existing topic to an item). Cela vous permettra de voir tout de suite si vos tests sont bien écrits.
-
Créez une nouvelle branche
feature-32à partir de la branche maître (v7) :git checkout v7 git checkout -b feature-32 -
Faites une copie de
features/attribute_set.featureen tant quefeatures/topic_assign.feature. Ne gardez qu'un seul scénario et adaptez le pour décrire l'item non plus avec un attribut mais avec une rubrique existante (par exempleMonture en chef d'œuvredu point de vueHistoire de l'art). Pour éviter un petit bug de Cucumber, remplacez dans les textes les apostrophes droites'par des apostrophes courbes‘. -
Lancez le test :
cucumber features/topic_assign.featureLes étapes déjà définies sont exécutées. Par contre, Cucumber vous donne le squelette des deux étapes à définir.
-
Pour le
Alors:- Copiez le squelette du
Alorsdansfeatures/step_definition/outcome.rb, - Remplacez le nom du paramètre (
|string|) pour qu'il soit plus explicite (|topic|), - Cherchez s'il n'y a pas une étape existante qui serait synonyme, vérifiez que les opérations Capybara correspondent bien à la manière la plus simple de vérifier le résultat,
- Supprimez donc le squelette que vous avez ajouté et modifiez la dernière étape de votre scénario pour réutiliser l'étape existante.
- Copiez le squelette du
-
Pour le
Quand:- Copiez le squelette du
Quanddansfeatures/step_definition/event.rb, - Remplacez les noms des paramètres (
|string, string|) pour qu'ils soient plus explicites, - Il n'y a pas d'étape synonyme... Par contre l'ajout d'une rubrique ressemble un peu à l'ajout d'un attribut. Copiez l'étape et, pour correspondre à l'interface, remplacez :
- le "placeholder" du champ de saisie,
- l'identifiant du bouton.
- Lancez les tests. Quel problème pose le placeholder pour repérer le champ de saisie ?
- Modifiez votre test en utilisant la structure de Capybara
within('div', text: ...) do ... end. - Lancez le test et observez le texte de l'erreur. Reproduisez les actions à la main. Qu'êtes-vous en train de faire ? Que faudrait-il changer dans la séquence des actions ? Inspectez l'élément pour voir comment l'atteindre.
- Ajoutez une action avec
click_on class: ....
- Copiez le squelette du
`