Confus au sujet de mon Gherkin - navigation entre les pages Web
Question
Je viens juste de commencer avec BDD sur un projet web, en utilisant SpecFlow et Watin pour automatiser les choses à travers le navigateur, et je ne suis pas tout à fait sûr de savoir comment écrire mes pas.
Je suis en train de conduire tout des essais, et d'une manière TDD, rien écrire à moins qu'il est nécessaire de faire un laissez-passer de test. (Je suis également l'unité de faire des tests pour conduire les détails, mais cette question est à ce sujet). Une chose que je suis confus au sujet est la navigation entre les pages, et si / comment cela doit être défini dans les spécifications.
Le premier test consiste à entrer quelques détails et veillant à ce qu'ils apparaissent dans une liste. Ma première tentative va quelque chose comme ceci:
Scénario: Ajouter Détails Option 1
Étant donné que je suis sur la page « Accueil »
Lorsque je clique sur « Ajouter Details »
Et j'entre « John Smith » dans le champ Nom
Et je clique sur « Enregistrer »
Puis "John Smith" apparaît dans la liste
Cependant, cela implique de naviguer entre deux pages, donc je ne sais pas si cela doit être explicite - sinon, je viens de supposer que je suis sur la bonne page, ou les étapes qui sont apparemment sans rapport avec ce qui la page que je suis sur (par exemple, « Quand je clique sur Ajouter Details ») ont des assertions pour vérifier quelle page je suis.
Est-ce que nous vérifions les pages avec des étapes explicites dans le scénario?
Scénario: Ajouter Détails Option 2
Étant donné que je suis sur la page « Accueil »
Lorsque je clique sur « Ajouter Details »
Je suis sur la page « Détails Ajouter » Et j'entre « John Smith » dans le champ Nom
Et je clique sur « Enregistrer »
Je suis sur la page "Accueil" Puis "John Smith" apparaît dans la liste
Ou est-ce que nous faisons dans les étapes de l'option 1, mais pas mentionner explicitement?
Par exemple, en cliquant sur le chèque doit-'ajouter des détails de ce que nous finissons sur la bonne page?
public void WhenIClickAddDetils{
// syntax probably wrong, not important
Assert.That(IE.Button("AddDetails").exists);
IE.Button("AddDetails").click();
Assert.That(IE.PageTitle = "Add Details")); // do we check this here?
}
Ou devrions-nous vérifier que nous sommes sur la bonne page avant d'entrer dans les détails?
public void WhenIEnterDetils{
Assert.That(IE.PageTitle = "Add Details")); // do we check this here?
IE.TextField("Name").value = "John Smith";
// etc
}
Sinon, nous pourrions commencer par
Étant donné que je suis sur la page "Détails Ajouter"
Et il suffit de faire cette étape incluent à partir de la page d'accueil et cliquez sur le « bouton Ajouter Details » pour se rendre à cette page. Bien que cela laisse toujours le même problème avec la navigation Retour à la page d'accueil après que nous cliquons sur « Enregistrer ».
Toutes les pensées?
La solution
Je dirais que vous n'avez pas de le vérifier dans ce scénario. En fait, le test est Given-When-Then
(organiser acte-assert), et And I am on the "Add Details" page
est en fait un Then
(assert) à l'intérieur When
(acte), qui ne semble pas juste pour moi.
Mon sentiment profond est qu'il devrait ressembler à ceci:
Scenario: Add Details directs to "Add Details" page
Given I am on the "Home" page
When I click "Add Details"
Then I am on "Add Details" page
Scenario: "Add Details" adds person to the list
Given I am on the "Add Details" page
And I enter "John Smith" in the Name field
And I click "Save"
Then I am on the "Home" page
And "John Smith" appears in the list