BDD cu Behat

BDD framework-ul PHP Behat, vă permite să vă testați aplicațiile PHP folosind propoziții care pot fi citite de oameni pentru a scrie caracteristici și scenarii despre modul în care aplicațiile dvs. ar trebui să se comporte pentru a-și testa funcționalitatea. Apoi putem rula aceste teste pentru a vedea dacă cererea noastră se comportă așa cum era de așteptat. Să petrecem aproximativ 15 minute rapid peste procesul de instalare a lui Behat și să învățăm cum putem testa comportamentul aplicațiilor PHP folosind elementele de bază.


Instalare

Pentru a începe testarea cu Behat, trebuie doar să o instalăm pe mașina noastră de dezvoltare locală. Voi folosi Composer, dar puteți să aruncați o privire la documentația pentru metode suplimentare de instalare.

În cadrul aplicației dvs. PHP (am o aplicație goală PHP numită phpbehat create în avans) creați un composer.json fișier cu următorul cod pentru a încărca în Behat:

"necesită": "behat / behat": "2.4.*@stable", "minimum-stabilitate": "dev", "config": bin-dir "bin /"

În terminalul dvs. îl putem instala utilizând următoarea comandă:

compozitor

Ar trebui să putem conduce acum bin / behat comanda pentru a lucra cu Behat.


Crearea de funcții

Întotdeauna începem prin crearea unui nou caracteristică. O caracteristică este un lucru pe care îl putem folosi pentru a descrie o caracteristică a aplicației noastre și apoi ao implementa pentru a trece testul.

O caracteristică, la cea mai simplă, constă în:

  • Text ușor de citit de om, simplu.
  • Utilizează a .caracteristică extensie.
  • Conține beneficiile, rolul și caracteristica acesteia.
  • Poate deține o listă de scenarii.

Acum nu vă pot arăta cum să testați toate caracteristicile posibile pentru o aplicație, deoarece ar dura prea mult timp. Dar ceea ce pot face este să vă arăt cum să faceți o scriere a unei caracteristici de bază și să puteți adapta acest cod pentru ca acesta să funcționeze pentru aplicația dvs. specifică.

Testarea clasei Phpadder

Pentru a evita complicarea procesului de învățare, să creăm un lucru foarte simplu Phpadder.php fișier care conține o serie de metode pe care le putem folosi pentru a adăuga două numere împreună și afișa suma lor.

clasa Phpadder private $ a; private $ b; sumă publică; funcția publică __construct ($ a, $ b) $ this-> a = $ a; $ this-> b = $ b;  funcția publică add () $ this-> sum = $ this-> a + $ this-> b;  public display function () return $ this-> sum; 

Aceasta creează o nouă clasă numită Phpadder. Avem câteva proprietăți pentru a ține prima ($ a) și al doilea ($ b) care urmează să fie adăugate, precum și a $ suma proprietatea de a deține suma valorilor.

Apoi, avem constructorul nostru care inițiază proprietățile noastre. Apoi avem un adăuga metoda pentru a adăuga cele două numere împreună și în cele din urmă a afişa pentru a afișa suma celor două numere.

Adder Feature

Să încercăm acum Phpadder clasă. Creaza un nou .caracteristică fișier împreună cu următorul cod:

# features / phpadder.feature Caracteristică: adder Pentru a afișa suma a două numere Ca oricine trebuie să furnizez două numere

Începem, oferindu-i un nume de caracteristică sumator. Apoi, specificăm, în trei rânduri, beneficiile, rolul și caracteristicile caracteristicilor. Ar trebui să fie destul de auto-explicativă.

Acum, că avem funcția noastră, să începem să scriem scenariile noastre.


Crearea de scenarii

Oricând creăm o funcție, putem defini scenarii care descriu modul în care se comportă această caracteristică în anumite condiții. Scenariul urmărește același aspect de bază care constă în descrierea scenariului, un context, un eveniment și un rezultat.

Să creăm un scenariu care să ne testeze Phpadder cerere:

Scenariu: Afișați suma a două numere furnizate Având în vedere că am numărul 50 și numărul 25 Când le adaug pe ele, atunci ar trebui să obțin 75

Începem cu descrierea scenariului nostru, apoi enumerăm că începem cu cele două numere de 50 și 25 și când se adaugă împreună, ar trebui să afișeze suma de 75.

De asemenea, aveți mai multe contexte, evenimente și rezultate, utilizând următoarele cuvinte cheie: Și și Dar. Iată un exemplu modificat al scenariului anterior pe care îl vom folosi Și:

Scenariu: Afișați suma celor două numere furnizate Având în vedere că am numărul 50 și numărul 25 Și am un al treilea număr de 25 Când le adaug pe ele, atunci ar trebui să obțin 100

Crearea definițiilor pasului

Un pas nu este altceva decât o funcție PHP care este alcătuită dintr-un cuvânt cheie, o expresie regulată și o funcție de apel invers. Fiecare declarație din scenariul dvs. va fi potrivită unui pas. Acești pași definesc ce ar trebui să se întâmple, dat fiind că una dintre afirmațiile dvs. este numită în cadrul unui scenariu. Stocați toți pașii dvs. în cadrul Caracteristici / bootstrap / FeatureContext.php fişier.

Pasul "dat"

În a noastră FeatureContext.php fișier (poate fi necesar să creați acest lucru), trebuie să scrie un pas pentru fiecare dintre afirmațiile noastre, folosind numele său ca nume de funcție. Vom începe cu "Având în vedere că am numărul" afirmație:

# features / bootstrap / FuncțiiContext.php necesită ("Phpadder.php"); utilizați Behat \ Behat \ Context \ BehatContext, Behat \ Behat \ Exception \ PendingException; folosiți Behat \ Gherkin \ Node \ PyStringNode, Behat \ Gherkin \ Node \ TableNode; clasa FeatureContext extinde BehatContext private $ Adder; / ** * @Given / ^ Am numarul (\ d +) si numarul (\ d +) $ / * / functia publica iHaveTheNumberAndTheNumber ($ a, $ b) $ this-> Adder = $ b); 

În primul rând, vom crea un nou fișier PHP, care să fie necesar în cadrul nostru Phpadder.php fișierul (fișierul pe care îl testează), și apoi vom folosi câteva clase Behat cu utilizare declarații, imediat după.

Apoi, ne creăm FeatureContext clasa și să o extindă BehatContext clasă.

Clasa noastră are o singură proprietate, $ Adder, care va deține a Phpadder obiect.

În cele din urmă, vom crea o metodă pentru primul nostru pas, folosind același nume ca și instrucțiunea. Pasul nostru are o expresie regulată, găsită în comentariul metodei. Această expresie regulată este folosită pentru a se potrivi pasului cu o declarație de scenariu. În cadrul acestei metode se atribuie pur și simplu un nou Phpadder obiect față de noi $ This-> Adder astfel încât restul metodelor noastre să aibă acces la aceleași Phpadder obiect.

Acum, probabil ați observat @Dat cuvântul cheie din comentariul funcției dvs., aceasta este de fapt o adnotare, astfel încât diferitele tipuri de pași să poată fi identificați. Poți să folosești @Dat, @Cand, și @Atunci.

Acum trebuie doar să scriem ultimii doi pași.

Pasul "Când"

/ ** * @ Când / ^ le adaug împreună $ / * / funcția publică iAddThemTogether () $ this-> Adder-> add (); 

Acest pas folosește pur și simplu $ This-> Adder obiecte adăuga pentru a adăuga cele două numere împreună.

Pasul "Apoi"

/ ** * @Apoi / ^ ar trebui sa primesc (\ d +) $ / * / functia publica iShouldGet ($ sum) if ($ this-> Adder-> sum! = $ Sum) : "$ this-> Adder-> suma);  $ this-> Adder-> display (); 

Acest pas începe prin a verifica dacă suma reală (recuperată cu ajutorul contului nostru $ This-> Adder obiect și a lui sumă proprietate) este nu egală cu suma așteptată. Dacă acest lucru este evaluat la adevărat, înseamnă că trebuie să avem Behat un eșec. Pentru a face acest lucru, vom arunca o nouă excepție afișând suma reală pentru a putea compara. Altfel, numim noi afişa metodă.

E timpul să executați testele.


Rularea testelor

Acum, când avem caracteristicile, scenariile și pașii expuși, conduceți testele folosind următoarea comandă:

bin / behat

Ar trebui să vedeți în interiorul terminalului următoarele mesaje de succes:


Puteți să vă asigurați că testele dvs. rulează corect, prin simpla rupere a ceva în dvs. Phpadder.php fișier astfel încât să nu funcționeze exact la fel cum vă așteaptă testul. De exemplu, dacă schimbăm adăuga metoda de a utiliza în schimb scădere, cum ar fi:

funcția publică adăugă () $ this-> sum = $ this-> a - $ this-> b; 

Și apoi reluăm testele noastre: bin / behat. Puteți vedea în terminalul nostru, acum avem un test de eșec, deoarece nu mai adaugă numerele noastre, ci le scade:



Concluzie

În concluzie, puteți urma un mic proces de patru etape pentru testarea aplicațiilor dvs. PHP folosind Behat:

  1. Definiți o funcție
  2. Definiți un scenariu
  3. Definiți definițiile pasului
  4. Rulați testele folosind bin / behat

Deci, cu doar acea cantitate mică de cod, ar trebui să avem acum o înțelegere de bază despre cum să lucrăm cu Behat pentru a testa aplicațiile noastre PHP. Pentru mai multe informații despre lucrul cu Behat, vă rugăm să verificați documentația.

Cod