I prerequisiti sono la parte "Data" dell'equazione. Questo dovrebbe preferibilmente accedere direttamente al database e creare gli oggetti di cui hai bisogno. Quindi per il tuo caso:
Given user "whatf" exists
And user "whatf" has 3 blog posts
When "whatf" logs in
Then he should be shown a list of all his posts
Ora, step user "whatf" exists
crea un utente nel database (chiamiamo l'utente in modo che possiamo avere una definizione specifica dell'utente dietro le quinte, in modo tale che tu non debba dire user exists with admin rights and pink theme and password "s3cret" ...
su e oltre).
Step user "whatf" has 3 blog posts
crea tre post nel database, contro il nuovo utente. Puoi essere più o meno specifico qui, se lo desideri. Più specifico ti dà flessibilità, meno specifico ti dà più passaggi riutilizzabili.
Il passo "whatf" logs in
dovrebbe essere la prima volta che usi Selenium, per avviare il browser e accedere all'utente.
Quindi, nella fase di conferma, usi anche il selenio per verificare che l'utente sia shown a list of all his posts
nella risposta.
Si noti inoltre che la differenza tra TDD e BDD è in realtà un dizionario. BDD incoraggia un linguaggio più orientato al comportamento per i tuoi test . Ma quei test possono ancora essere test unitari. Oppure possono essere test di accettazione ( ATDD ).
Ma la differenza tra ciò che chiamiamo un framework unit test (ad esempio xUnit) e ciò che chiamiamo un framework BDD (ad esempio Cetriolo) è molto più grande. Un framework BDD è definito molto più accuratamente un framework di test di accettazione, se vogliamo confrontarlo con un framework di test unitario. Esistono anche framework unit-test progettati con BDD in mente: li chiamiamo framework di test contesto / specifiche (al contrario di organizzare / agire / affermare).