BDD con Behat

Il framework BDD PHP Behat ti consente di testare le tue applicazioni PHP utilizzando frasi leggibili dall'uomo per scrivere caratteristiche e scenari su come le tue applicazioni dovrebbero comportarsi per testare la sua funzionalità. Possiamo quindi eseguire questi test per verificare se la nostra applicazione si comporta come previsto. Passiamo circa 15 minuti a esaminare rapidamente il processo di installazione di Behat e scopri come possiamo testare il comportamento delle nostre applicazioni PHP utilizzando le nozioni di base.


Installazione

Per iniziare i test con Behat, abbiamo solo bisogno di installarlo sul nostro computer di sviluppo locale. Userò Composer, ma puoi dare un'occhiata alla documentazione per ulteriori metodi di installazione.

All'interno della tua applicazione PHP (ho un app PHP vuota chiamata phpbehat creato in anticipo) crea a composer.json file con il seguente codice da caricare in Behat:

"require": "behat / behat": "2.4.*@stable", "minimum-stability": "dev", "config": "bin-dir": "bin /"

Nel tuo terminale possiamo installarlo usando il seguente comando:

aggiornamento del compositore

Ora dovremmo essere in grado di eseguire il bin / Behat comando per lavorare con Behat.


Creazione di caratteristiche

Iniziamo sempre creando un nuovo caratteristica. Una caratteristica è qualcosa che possiamo usare per descrivere una funzionalità della nostra applicazione e quindi implementarla per far passare il test.

Una caratteristica, nel modo più semplice, consiste di:

  • Testo leggibile a lettura umana.
  • Utilizza a .caratteristica estensione.
  • Contiene il vantaggio, il ruolo e la funzionalità stessa della funzione.
  • Può contenere un elenco di scenari.

Ora non posso mostrarti come testare tutte le funzionalità possibili per un'applicazione, poiché sarebbe troppo lungo. Ma quello che posso fare è mostrarti come procedere per scrivere una funzione di base e puoi adattare questo codice per farlo funzionare per la tua applicazione specifica.

Test della classe Phpadder

Per evitare di complicare il processo di apprendimento, creiamo un modo molto semplice Phpadder.php file che contiene un paio di metodi che possiamo usare per aggiungere due numeri insieme e visualizzare la loro somma.

Phpadder di classe $ privato a; privato $ b; $ $ pubblico; funzione pubblica __construct ($ a, $ b) $ this-> a = $ a; $ this-> b = $ b;  public function add () $ this-> sum = $ this-> a + $ this-> b;  public function display () return $ this-> sum; 

Questo crea una nuova classe chiamata Phpadder. Abbiamo alcune proprietà per contenere il primo ($ un) e il secondo ($ b) numeri da aggiungere, oltre a a $ sum proprietà per contenere la somma dei valori.

Successivamente, abbiamo il nostro costruttore che inizializza le nostre proprietà. Quindi abbiamo un Inserisci metodo per aggiungere i due numeri insieme e infine a display metodo per visualizzare la somma dei due numeri.

Funzione di aggiunta

Proviamo ora questo Phpadder classe. Crea un nuovo .caratteristica file con il seguente codice:

# features / phpadder.feature Feature: adder Per visualizzare la somma di due numeri Come chiunque ho bisogno di fornire due numeri

Iniziamo dando un nome al nostro articolo vipera. Quindi specifichiamo, su tre righe, il vantaggio della funzione, il ruolo e infine la funzionalità stessa. Dovrebbe essere abbastanza auto esplicativo.

Ora che abbiamo la nostra funzione, iniziamo a scrivere i nostri scenari.


Creazione di scenari

Ogni volta che creiamo una funzionalità, possiamo definire scenari che descrivono il comportamento di tale caratteristica in determinate condizioni. Gli scenari seguono lo stesso layout di base costituito dalla descrizione dello scenario, un contesto, un evento e un risultato.

Creiamo uno scenario per testare il nostro Phpadder applicazione:

Scenario: visualizza la somma di due numeri forniti Dato che ho il numero 50 e il numero 25 Quando li aggiungo Quindi dovrei ottenere 75

Iniziamo con la descrizione dello scenario, quindi elenciamo che iniziamo con i due numeri di 50 e 25 e quando vengono aggiunti insieme dovrebbe visualizzare la somma di 75.

Puoi anche avere più contesti, eventi e risultati utilizzando le seguenti parole chiave: E e Ma. Ecco un esempio modificato dello scenario precedente in cui utilizzeremo E:

Scenario: Mostra la somma di due numeri forniti Dato che ho il numero 50 e il numero 25 E ho un terzo numero di 25 Quando li aggiungo Quindi dovrei ottenere 100

Creazione di definizioni di passaggi

Un passaggio non è altro che una funzione PHP composta da una parola chiave, un'espressione regolare e una funzione di callback. Ogni affermazione all'interno del tuo scenario sarà abbinata a un passo. Questi passaggi definiscono cosa dovrebbe accadere dato che una delle tue affermazioni è chiamata all'interno di uno scenario. Memorizzi tutti i tuoi passi all'interno di Caratteristiche / bootstrap / FeatureContext.php file.

Il passo "dato"

Nel nostro FeatureContext.php file (potrebbe essere necessario creare questo), abbiamo bisogno di scrivere un passo per ciascuna delle nostre dichiarazioni, usando il suo nome come nome della funzione. Inizieremo con il "Dato che ho il numero" dichiarazione:

# features / bootstrap / FeaturesContext.php require ("Phpadder.php"); utilizzare Behat \ Behat \ Context \ BehatContext, Behat \ Behat \ Exception \ PendingException; usa Behat \ Gherkin \ Node \ PyStringNode, Behat \ Gherkin \ Node \ TableNode; class FeatureContext estende BehatContext private $ Adder; / ** * @Given / ^ Ho il numero (\ d +) e il numero (\ d +) $ / * / funzione pubblica iHaveTheNumberAndTheNumber ($ a, $ b) $ this-> Adder = new Phpadder ($ a, $ b); 

Per prima cosa, creiamo un nuovo file PHP, richiesto nel nostro Phpadder.php file (il file che stiamo testando), e quindi usiamo alcune classi di Behat con uso dichiarazioni, subito dopo.

Successivamente, creiamo il nostro FeatureContext classe e farlo estendere il BehatContext classe.

La nostra classe ha solo una proprietà, $ Adder, che manterrà un Phpadder oggetto.

Infine, creiamo un metodo per il nostro primo passo usando lo stesso nome dell'istruzione. Il nostro passo ha un'espressione regolare, trovata all'interno del commento del metodo. Questa espressione regolare viene utilizzata per abbinare il passaggio a una dichiarazione di scenario. All'interno di questo metodo assegniamo semplicemente un nuovo Phpadder oggetto al nostro $ This-> Adder proprietà in modo che il resto dei nostri metodi abbia accesso allo stesso Phpadder oggetto.

Ora, probabilmente hai notato il @Dato parola chiave all'interno del commento della tua funzione, questa è in realtà un'annotazione in modo che i diversi tipi di passaggi possano essere identificati. Puoi usare @Dato, @Quando, e @Poi.

Ora dobbiamo solo scrivere gli ultimi due passaggi.

Il passaggio "Quando"

/ ** * @Quando / ^ Li aggiungo insieme $ / * / funzione pubblica iAddThemTogether () $ this-> Adder-> add (); 

Questo passaggio utilizza semplicemente il nostro $ This-> Adder oggetto di Inserisci metodo per aggiungere i due numeri insieme.

Il passaggio "Allora"

/ ** * @Then / ^ Dovrei ottenere (\ d +) $ / * / public function iShouldGet ($ sum) if ($ this-> Adder-> sum! = $ Sum) throw new Exception ("Somma reale : ". $ this-> Adder-> sum);  $ this-> Adder-> display (); 

Questo passaggio inizia controllando se la somma effettiva (recuperata usando il nostro $ This-> Adder oggetto e suo somma proprietà) è non uguale alla somma prevista. Se questo è vero, significa che abbiamo bisogno che Behat mostri un fallimento. Per fare ciò, ci limiteremo a lanciare una nuova eccezione visualizzando la somma effettiva in modo che possiamo confrontare. Altrimenti, chiamiamo il nostro display metodo.

È ora di eseguire i test.


Esecuzione dei test

Ora che abbiamo le nostre funzionalità, gli scenari e i passaggi illustrati, eseguiamo i nostri test utilizzando il seguente comando:

bin / Behat

Dovresti vedere i seguenti messaggi di successo all'interno del tuo terminale:


Puoi assicurarti che i tuoi test funzionino correttamente, semplicemente rompendo qualcosa nel tuo Phpadder.php file in modo che non sia eseguito nello stesso modo in cui il test si aspetta di farlo. Ad esempio, se cambiamo il Inserisci metodo per usare invece la sottrazione, in questo modo:

funzione pubblica add () $ this-> sum = $ this-> a - $ this-> b; 

E poi riproviamo i nostri test: bin / Behat. Puoi vedere nel nostro terminale, ora abbiamo un test fallito, perché non aggiunge più i nostri numeri ma li sottrae:



Conclusione

In conclusione, puoi seguire una piccola procedura in quattro passaggi per testare le tue app PHP usando Behat:

  1. Definire una caratteristica
  2. Definisci uno scenario
  3. Definire le definizioni del passo
  4. Esegui i test usando bin / Behat

Quindi, con una piccola quantità di codice, ora dovremmo avere una conoscenza di base su come lavorare con Behat per testare le nostre applicazioni PHP. Per ulteriori informazioni su come lavorare con Behat, consultare la relativa documentazione.