Domanda

Sono solo agli inizi con BDD su un progetto web, utilizzando SpecFlow e WatiN per automatizzare le cose attraverso il browser, e io non sono del tutto sicuro di come scrivere i miei passi.

Sto cercando di guidare tutto dalle prove, e in modo TDD, niente scrittura meno che non sia necessario per fare un passaggio di prova. (Sto anche facendo unità di test per guidare dettaglio, ma questa domanda non è su questo). Una cosa Sono confuso circa è la navigazione tra le pagine, e se / come questo dovrebbe essere definito nelle specifiche.

La prima prova prevede l'inserimento dei dettagli e assicurando che vengono visualizzati in un elenco. Il mio primo tentativo più o meno così:

Scenario: Aggiungi Dettagli Opzione 1

Dato io sono sul "Home" pagina
Quando faccio clic su "Aggiungi Dettagli"
E io entro in "John Smith" nel campo Nome
E clicco
"Salva" Poi "John Smith" viene visualizzato nell'elenco

Tuttavia, questo comporta la navigazione tra un paio di pagine, quindi non so se che deve essere esplicita - in caso contrario, non mi resta che pensare che sono sulla giusta pagina, o passi che apparentemente non collegato al quale pagina sono su (per esempio, 'Quando fai clic su Aggiungi dettagli') hanno affermazioni per verificare quale pagina sto.

Do controlliamo le pagine con passaggi espliciti nello scenario?

Scenario: Aggiungi Dettagli Opzione 2

Dato io sono sul "Home" pagina
Quando faccio clic su "Aggiungi Dettagli"
E sono sulla pagina "Add Dettagli"
E io entro in "John Smith" nel campo Nome
E clicco
"Salva" E sono sulla pagina "Home"
Poi "John Smith" viene visualizzato nell'elenco

O lo facciamo nei passi da opzione 1, solo che non citano in modo esplicito?

Per esempio, dovrebbe cliccando su 'Aggiungi Dettagli' di controllo che finiamo sulla giusta pagina?

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?
}

o dovremmo verificare che siamo sulla giusta pagina prima di entrare nei dettagli?

public void WhenIEnterDetils{
    Assert.That(IE.PageTitle = "Add Details")); // do we check this here?

    IE.TextField("Name").value = "John Smith";
    // etc
}

In alternativa, si potrebbe iniziare con

Dato Io sono sulla pagina "Add Dettagli"

E basta fare quel passo includono partire dalla home page e facendo clic sul pulsante 'Aggiungi dettagli', al fine di arrivare a quella pagina. Anche se questo lascia ancora lo stesso problema con la navigazione tornare alla pagina iniziale dopo clicchiamo su 'Salva'.

Qualche idea?

È stato utile?

Soluzione

direi che non si controlla in questo scenario. In sostanza, il test è Given-When-Then (organizzare-act-assert), ed è in realtà un And I am on the "Add Details" page Then (assert) all'interno When (ACT), che non sembra giusto per me.

La mia sensazione è che dovrebbe assomigliare a questo, invece:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top