Met het BDD PHP framework Behat kun je je PHP-applicaties testen met behulp van door mensen leesbare zinnen om functies en scenario's te schrijven over hoe je applicaties zouden moeten werken om de functionaliteit ervan te testen. Vervolgens kunnen we deze tests uitvoeren om te zien of onze applicatie zich gedraagt zoals verwacht. Laten we ongeveer 15 minuten besteden aan het snel doorlopen van het installatieproces van Behat en leren hoe we ons PHP-applicatiegedrag kunnen testen met behulp van de basisprincipes.
Om te beginnen met testen met Behat, hoeven we het alleen maar op onze lokale ontwikkelingsmachine te installeren. Ik gebruik Composer, maar je kunt de documentatie bekijken voor aanvullende installatiemethoden.
Binnen je PHP-applicatie (ik heb een lege PHP-app met de naam phpbehat
van tevoren gemaakt) maak een composer.json
bestand met de volgende code om in Behat te laden:
"require": "behat / behat": "2.4.*@stable", "minimum-stability": "dev", "config": "bin-dir": "bin /"
In uw terminal kunnen we het installeren met behulp van de volgende opdracht:
update van de componist
We zouden nu in staat moeten zijn om het bin / Behat
opdracht om met Behat te werken.
We beginnen altijd met het maken van een nieuw voorzien zijn van. Een functie is iets dat we kunnen gebruiken om een kenmerk van onze applicatie te beschrijven en deze vervolgens implementeren om de test te laten slagen.
Een functie, op zijn eenvoudigst, bestaat uit:
.voorzien zijn van
uitbreiding.Nu kan ik je niet laten zien hoe je alle mogelijke functies voor een toepassing kunt testen, want dat zou veel te lang duren. Maar wat ik wel kan doen, is laten zien hoe je een basiskenmerk kunt schrijven en je kunt deze code aanpassen om deze voor je specifieke toepassing te laten werken..
Om te voorkomen dat het leerproces ingewikkelder wordt, maken we een heel eenvoudige Phpadder.php
bestand dat een paar methoden bevat die we kunnen gebruiken om twee getallen bij elkaar op te tellen en hun som weer te geven.
class Phpadder private $ a; privé $ b; openbare $ som; openbare functie __construct ($ a, $ b) $ this-> a = $ a; $ this-> b = $ b; public function add () $ this-> sum = $ this-> a + $ this-> b; openbare functie display () return $ this-> sum;
Hiermee wordt een nieuwe klasse met de naam gemaakt Phpadder
. We hebben een paar eigenschappen om de eerste te houden ($ a
) en ten tweede ($ b
) nummers die moeten worden toegevoegd, evenals een $ sum
eigenschap om de som van de waarden vast te houden.
Vervolgens hebben we onze constructor die onze eigenschappen initialiseert. Dan hebben we een toevoegen
methode om de twee nummers bij elkaar te voegen en ten slotte een tonen
methode om de som van de twee getallen weer te geven.
Laten we dit nu testen Phpadder
klasse. Maak een nieuw .voorzien zijn van
bestand samen met de volgende code:
# features / phpadder.feature Feature: adder Om de som van twee getallen weer te geven Zoals iedereen moet ik twee getallen opgeven
We beginnen met het geven van een naam aan onze functie adder
. Vervolgens specificeren we op drie regels het voordeel, de rol en ten slotte de functie zelf. Het moet redelijk zelfverklarend zijn.
Nu we onze functie hebben, beginnen we met het schrijven van onze scenario's.
Telkens wanneer we een functie maken, kunnen we scenario's definiëren die beschrijven hoe die functie zich onder bepaalde omstandigheden gedraagt. Scenario's volgen dezelfde basislay-out die bestaat uit de beschrijving van het scenario, een context, een gebeurtenis en een uitkomst.
Laten we een scenario maken om onze te testen Phpadder
toepassing:
Scenario: geef de som van twee opgegeven getallen weer Gegeven heb ik het getal 50 en het getal 25 Wanneer ik ze samen voeg, zou ik er 75 moeten krijgen
We beginnen met onze scenariobeschrijving, we geven vervolgens aan dat we beginnen met de twee nummers van 50 en 25 en wanneer ze bij elkaar worden opgeteld, moet de som van 75 worden weergegeven.
U kunt ook meerdere contexten, evenementen en resultaten gebruiken met behulp van de volgende sleutelwoorden: En
en Maar
. Hier is een aangepast voorbeeld van het vorige scenario waarin we zullen gebruiken En
:
Scenario: geef de som van twee verstrekte getallen weer Gegeven heb ik het getal 50 en het getal 25 En ik heb een derde aantal van 25 Wanneer ik ze samen voeg, zou ik 100 moeten krijgen
Een stap is niets meer dan een PHP-functie die bestaat uit een trefwoord, een reguliere expressie en een callback-functie. Elke bewering in uw scenario wordt gekoppeld aan een stap. Deze stappen bepalen wat er moet gebeuren als een van uw uitspraken binnen een scenario wordt aangeroepen. Je slaat al je stappen op in de features / bootstrap / FeatureContext.php
het dossier.
In onze FeatureContext.php
bestand (u moet dit mogelijk maken), we moeten een stap schrijven voor elk van onze verklaringen, waarbij de naam ervan als functienaam wordt gebruikt. We beginnen met de "Gezien ik het nummer heb"
uitspraak:
# features / bootstrap / FeaturesContext.php vereisen ("Phpadder.php"); gebruik Behat \ Behat \ Context \ BehatContext, Behat \ Behat \ Exception \ PendingException; gebruik Behat \ Gherkin \ Node \ PyStringNode, Behat \ Gherkin \ Node \ TableNode; class FeatureContext breidt BehatContext uit private $ Adder; / ** * @Given / ^ Ik heb het nummer (\ d +) en het nummer (\ d +) $ / * / openbare functie iHaveTheNumberAndTheNumber ($ a, $ b) $ this-> Adder = nieuwe Phpadder ($ a, $ b);
Eerst maken we een nieuw PHP-bestand aan, vereisen dit in onze Phpadder.php
bestand (het bestand dat we testen) en gebruiken we een paar Behat-klassen met gebruik
verklaringen, direct erna.
Vervolgens maken we onze FeatureContext
klasse en laat het uitbreiden BehatContext
klasse.
Onze klas heeft slechts één eigenschap, $ Adder
, die een a zal houden Phpadder
voorwerp.
Ten slotte creëren we een methode voor onze eerste stap met dezelfde naam als de verklaring. Onze stap heeft een reguliere expressie, te vinden in de opmerking van de methode. Deze reguliere expressie wordt gebruikt om de stap aan een scenariotest aan te passen. Binnen deze methode kennen we eenvoudig een nieuwe toe Phpadder
bezwaar hebben tegen onze $ This-> Adder
eigendom, zodat de rest van onze methoden toegang hebben tot hetzelfde Phpadder
voorwerp.
Nu hebt u waarschijnlijk de @Gegeven
sleutelwoord binnen de opmerking van uw functie, dit is eigenlijk een annotatie zodat de verschillende soorten stappen kunnen worden geïdentificeerd. Je kunt gebruiken @Gegeven
, @Wanneer
, en @Dan
.
Nu hoeven we alleen de laatste twee stappen te schrijven.
/ ** * @Wanneer / ^ voeg ik ze samen $ / * / public function iAddThemTogether () $ this-> Adder-> add ();
Deze stap gebruikt eenvoudig onze $ This-> Adder
voorwerpen toevoegen
methode om de twee nummers bij elkaar te voegen.
/ ** * @Then / ^ Ik zou (\ d +) $ / * / publieke functie iShouldGet ($ sum) if ($ this-> Adder-> sum! = $ Sum) throw new Exception ("Actual sum : ". $ this-> Adder-> sum); $ this-> Adder-> display ();
Deze stap begint door te controleren of de werkelijke som (opgehaald met behulp van onze $ This-> Adder
object en zijn som
eigendom) is niet gelijk aan de verwachte som. Als dit naar waar uitkomt, betekent dit dat we Behat een mislukking moeten laten zien. Om dit te doen, gooien we gewoon een nieuwe uitzondering met de werkelijke som, zodat we kunnen vergelijken. Anders noemen we onze tonen
methode.
Tijd om de tests uit te voeren.
Nu we onze functies, scenario's en uitgevoerde stappen hebben, laten we onze tests uitvoeren met de volgende opdracht:
bin / Behat
U zou de volgende succesboodschappen in uw terminal moeten zien:
U kunt ervoor zorgen dat uw tests correct worden uitgevoerd, door eenvoudig iets in uw te breken Phpadder.php
bestand zodat het niet op dezelfde manier werkt als uw test verwacht. Bijvoorbeeld als we de veranderen toevoegen
methode om in plaats daarvan aftrekken te gebruiken, zoals zo:
public function add () $ this-> sum = $ this-> a - $ this-> b;
En dan voeren we onze tests opnieuw uit: bin / Behat
. U kunt in onze terminal zien dat we nu een mislukte test hebben, omdat deze onze nummers niet langer toevoegt, maar aftrekt:
Tot slot kun je een klein proces van vier stappen volgen om je PHP-apps te testen met Behat:
bin / Behat
Met zo'n kleine hoeveelheid code zouden we nu een basiskennis moeten hebben van hoe we met Behat kunnen werken om onze PHP-applicaties te testen. Raadpleeg hun documentatie voor meer informatie over het werken met Behat.