BDD PHP-rammeverket Behat, lar deg teste dine PHP-applikasjoner ved hjelp av menneskelige lesbare setninger for å skrive funksjoner og scenarier om hvordan dine applikasjoner skal oppføre seg for å teste funksjonaliteten. Vi kan deretter kjøre disse testene for å se om vår søknad virker som forventet. La oss bruke omtrent 15 minutter til å gå raskt over Behats installasjonsprosess og lære hvordan vi kan teste PHP-applikasjonens atferd ved hjelp av det grunnleggende.
For å begynne å teste med Behat, trenger vi bare å installere den på vår lokale utviklingsmaskin. Jeg bruker Composer, men du kan se på en dokumentasjon for ytterligere installasjonsmetoder.
Innenfor PHP-applikasjonen din (jeg har en tom PHP-app som heter phpbehat
opprettet på forhånd) opprett en composer.json
fil med følgende kode for å laste inn Behat:
"krav": "behat / behat": "2.4.*@stable", "minimumstabilitet": "dev", "config": "bin-dir": "bin /"
I din terminal kan vi installere den ved hjelp av følgende kommando:
komponistoppdatering
Vi burde nå kunne kjøre bin / behat
beordre å jobbe med Behat.
Vi begynner alltid ved å lage en ny trekk. En funksjon er noe vi kan bruke til å beskrive en funksjon i søknaden vår og deretter implementere den for å få testen til å passere.
En funksjon, på sitt enkleste, består av:
.trekk
forlengelse.Nå kan jeg ikke vise deg hvordan du kan teste alle mulige funksjoner for et program, da det ville ta altfor lang tid. Men det jeg kan gjøre er å vise deg hvordan du skal skrive om en grunnleggende funksjon, og du kan tilpasse denne koden slik at den fungerer for din spesifikke applikasjon.
For å unngå å komplisere læringsprosessen, la oss lage en veldig enkel Phpadder.php
fil som inneholder et par metoder som vi kan bruke til å legge til to tall sammen og vise summen deres.
klasse Phpadder privat $ a; privat $ b; offentlig $ sum; offentlig funksjon __construct ($ a, $ b) $ this-> a = $ a; $ this-> b = $ b; offentlig funksjon legg til () $ this-> sum = $ this-> a + $ this-> b; offentlig funksjonsvisning () return $ this-> sum;
Dette skaper en ny klasse som heter Phpadder
. Vi har noen egenskaper for å holde den første ($ a
) og andre ($ b
) tall som skal legges til, samt a $ sum
eiendom for å holde verdiene summen.
Deretter har vi vår konstruktør som initialiserer våre eiendommer. Da har vi en Legg til
metode for å legge de to tallene sammen og til slutt a vise
metode for å vise summen av de to tallene.
La oss nå teste dette Phpadder
klasse. Lage en ny .trekk
filen sammen med følgende kode:
# funksjoner / phpadder.feature Feature: adder For å vise summen av to tall Som noen må jeg gi to tall
Vi starter med å gi vår funksjon et navn på huggorm
. Deretter angir vi på tre linjer funksjonens fordel, rolle og til slutt selve funksjonen. Det skal være ganske selvforklarende.
Nå som vi har vår funksjon, la oss begynne å skrive scenariene våre.
Når vi lager en funksjon, kan vi definere scenarier som beskriver hvordan denne funksjonen oppfører seg under visse forhold. Scenarioer følger samme grunnleggende layout som består av scenarioets beskrivelse, en kontekst, en hendelse og et utfall.
La oss lage et scenario for å teste ut våre Phpadder
applikasjon:
Scenario: Vis summen av to oppgitte tall. Gitt jeg har nummer 50 og nummer 25 Når jeg legger dem sammen Da skal jeg få 75
Vi begynner med scenariobeskrivelsen, vi forteller da at vi starter med de to tallene 50 og 25 og når de legges sammen, skal det vise summen av 75.
Du kan også ha flere sammenhenger, hendelser og resultater også ved å bruke følgende nøkkelord: Og
og Men
. Her er et modifisert eksempel på det forrige scenariet der vi skal bruke Og
:
Scenario: Vis summen av to oppgitte tall Gitt jeg har nummer 50 og nummer 25 Og jeg har et tredje nummer på 25 Når jeg legger dem sammen Da skal jeg få 100
Et trinn er ikke mer enn en PHP-funksjon som består av et søkeord, et vanlig uttrykk og en tilbakeringingsfunksjon. Hver setning i scenariet ditt vil bli matchet til et trinn. Disse trinnene definerer hva som skal skje gitt at et av dine uttalelser kalles i et scenario. Du lagrer alle trinnene dine i funksjoner / bootstrap / FeatureContext.php
fil.
I vår FeatureContext.php
fil (du må kanskje opprette dette), vi må skrive et trinn for hvert av våre uttalelser, ved å bruke navnet som funksjonsnavn. Vi starter med "Gitt jeg har nummeret"
uttalelse:
# features / bootstrap / FeaturesContext.php krever ("Phpadder.php"); bruk Behat \ Behat \ Context \ BehatContext, Behat \ Behat \ Exception \ PendingException; bruk Behat \ Gherkin \ Node \ PyStringNode, Behat \ Gherkin \ Node \ TableNode; klasse FeatureContext utvider BehatContext private $ Adder; / ** * @Given / ^ Jeg har tallet (\ d +) og tallet (\ d +) $ / * / offentlige funksjonen iHaveTheNumberAndTheNumber ($ a, $ b) $ this-> Adder = ny Phpadder ($ a, $ b);
Først oppretter vi en ny PHP-fil, krever i vår Phpadder.php
fil (filen vi tester), og så bruker vi noen få klasser med bruk
uttalelser, rett etter.
Deretter lager vi vår FeatureContext
klasse og få det til å forlenge BehatContext
klasse.
Vår klasse har bare en eiendom, $ Adder
, som vil holde en Phpadder
gjenstand.
Til slutt lager vi en metode for vårt første skritt med samme navn som uttalelsen. Vårt skritt har et regulært uttrykk, funnet i metodenes kommentar. Dette vanlige uttrykket brukes til å matche trinnet til en scenarieretning. Innenfor denne metoden tildeler vi bare en ny Phpadder
protestere mot vår $ Dette-> Adder
eiendom slik at resten av metodene våre har tilgang til det samme Phpadder
gjenstand.
Nå har du sikkert lagt merke til @Given
Søkeord innenfor funksjonens kommentar, dette er faktisk en merknad, slik at ulike typer trinn kan identifiseres. Du kan bruke @Given
, @Når
, og @Deretter
.
Nå må vi bare skrive de to siste trinnene.
/ ** * @Når / ^ legger jeg sammen dem $ / * / offentlig funksjon iAddThemTogether () $ this-> Adder-> add ();
Dette trinnet bruker bare vår $ Dette-> Adder
objektets Legg til
metode for å legge de to tallene sammen.
/ ** * @Then / ^ Jeg burde få (\ d +) $ / * / offentlig funksjon iShouldGet ($ sum) if ($ this-> Adder-> sum! = $ Sum) kaste ny unntak : ". $ this-> Adder-> sum); $ this-> Adder-> display ();
Dette trinnet starter ved å sjekke om den faktiske summen (hentet ved hjelp av vår $ Dette-> Adder
objekt og dets sum
eiendom) er ikke lik forventet sum. Hvis dette vurderes til sant betyr det at vi må ha Behat vise en feil. For å gjøre det, vil vi bare kaste et nytt unntak som viser den faktiske summen, slik at vi kan sammenligne. Ellers kaller vi vår vise
metode.
Tid til å kjøre testene.
Nå som vi har våre funksjoner, scenarier og trinn lagt ut, la oss kjøre testene våre ved å bruke følgende kommando:
bin / behat
Du bør se følgende suksessmeldinger inne i terminalen din:
Du kan forsikre deg om at testene dine kjører riktig, ved å bare bryte noe i din Phpadder.php
filen slik at den ikke løper på samme måte som testen forventer det. For eksempel, hvis vi endrer Legg til
metode for å bruke subtraksjon i stedet, slik som:
offentlig funksjon legg til () $ this-> sum = $ this-> a - $ this-> b;
Og så gjenoppretter vi testene våre: bin / behat
. Du kan se i vår terminal, vi har nå en sviktende test, fordi den ikke lenger legger til tallene våre, men trekker dem ut:
Som konklusjon kan du følge en liten fire trinns prosess for å teste PHP-applikasjonene dine ved hjelp av Behat:
bin / behat
Så, med bare den lille mengden kode, bør vi nå ha en grunnleggende forståelse av hvordan vi skal jobbe med Behat for å teste våre PHP-applikasjoner. For mer informasjon om å jobbe med Behat, vennligst sjekk deres dokumentasjon.