Phpspec

begon, begon phpspec,,,,,,,,,, 103, 13 - eenheid,,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen.,, in dit korte, maar de uitgebreide training en we zullen moeten kijken naar de     gedrag gedreven ontwikkeling (bdd) en phpspec  .Het belangrijkste is, zal het voor de phpspec instrumenten worden ingevoerd, maar als we naar binnen gaan, zullen we het concept van de verschillende bdd.Bdd is een actueel onderwerp, phpspec al veel aandacht heeft gekregen, heeft de Gemeenschap onlangs in PHP.,,, specbdd & phpspec bdd zijn beschrijving van het gedrag van de software, om het juiste te ontwerpen.Het zijn vaak de nadruk - en tdd, maar, het testen, de   aanvraag bdd meer is, een beschrijving van de   gedrag.Met behulp van de bdd dwingt je voortdurend rekening wordt gehouden met de werkelijke behoeften en verwachtingen van het gedrag van de software van je gebouw.,,, twee bdd instrumenten al veel aandacht heeft gekregen in de Gemeenschap, en phpspec PHP onlangs, behat.Beschrijving van de behat je helpen,   gedrag,   aanvragen, het gebruik van "de leesbaarheid van de taal.Phpspec, aan de andere kant, bijdragen tot de door u beschreven, de interne   gedrag,   van toepassing is, met behulp van de geschreven taal, dus specbdd kleine "specificaties".Deze specificatie is test je code met het gewenste gedrag.,,, wat we moeten doen, tijdens de les, we gaan phpspec in verband met alles.We zijn onderweg, we bouwen een lijstje van toepassing is, stap voor stap, gebaseerd op het gebruik van specbdd methode.We gaan, we hebben phpspec voorop.,,,, noot: dit is een PHP tussentijdse.Ik veronderstel dat je beheerst de gerichte PHP geïnstalleerd.,,,,, in deze handleiding, neem ik aan dat u een van de volgende dingen lopen:,, de installatie, het werk PHP (ten minste 5.3), de componist, door de installatie van phpspec componist is de meest eenvoudige methode.Alles wat je moet doen is het volgende commando: in een terminal, moet phpspec /componist, dollar phpspec verstrek phpspec /phpspec vereist versie beperkingen: 2. * * * * * * * "ontwikkeling, waardoor de, componisten, hola,   in je dossier en de installatie van phpspec, leveranciers,  , om ervoor te zorgen dat de gids. Al het werk, de werking, het phpspec, kijk wat je krijgt als volgt:,, de leverancier /bin /phpspec $0 0 patiënten rennen DEMS, specificaties, configuratie, voordat we beginnen, we hebben wat configuratie.Phpspec loopt, het lijkt een yaml namen phpspec. Reid.Omdat we ons in de code, moeten we ervoor zorgen dat de phpspec weet dat.Bovendien, terwijl wij hier zijn, laten we ervoor zorgen dat onze bril ziet er mooi uit als we rennen ze.,,,., de volgende documenten:,, de formatter.name: mooie suite: todo_suite: namespace: petersuhm doet, zijn er nog veel van de toewijzing voor de keuze van zijn, kan je lezen, In het document. En een ding dat we moeten doen, is dat hoe de componist - code.Phpspec componisten automatische machine, dus dit is onze standaard operatie moet.,,, nog een lading elementen, componisten, hola,   voor je dossier, de componist:,, {"eisen": {"phpspec /phpspec": "2. * * * * * * * de" ontwikkeling ")," laad ": {" psr-0 ": {" petersuhm \\ \\ ":" ""}}}, rennen, componisten, sinds   laden, na wijziging van de automatische actualisering van de machine. Onze eerste specificaties, en nu zijn we klaar om te schrijven, onze eerste moeten we eerst een soort   genoemd, taskcollection,.We hebben die we phpspec specificaties klasse door, de omschrijving, de   commando   (of de korte versie  , afnemende,)  .,,, de leverancier /bin /phpspec beschrijving "petersuhm, programma 's en taskcollection" $leverancier /bin /phpspec die je wil dat ik het creëren van% quot% petersuhm doet, taskcollection% quot%?Ben je hier, wat is er gebeurd?Ten eerste, we moeten de specificaties van een phpspec creëren, taskcollection,.Ten tweede, we hebben de suite van specificaties, dan phpspec, automatisch, en voor de oprichting van de werkelijke, taskcollection,   klasse van ons.Cool, niet?Naar de suite, weer op de vlucht, en je zal zien dat we al een voorbeeld van de specificaties, we zullen zien wat een voorbeeld is):,, de leverancier /bin /phpspec, die petersuhm doet, taskcollection 10 ✔ is gestart (1) 1 1 specificaties door de produktie van MS,), we kunnen zien, taskcollection,  , is gestart.Wat is dit?Dat phpspec die specificaties dossier kijken, het is duidelijk:,, <?PHP petersuhm namespace specificaties doet; het gebruik van phpspec, objectbehavior; met behulp van de voorspelling en debat; klas taskcollectionspec uitbreiding objectbehavior {functie it_is_initializable () {% dit > shouldhavetype ('petersuhm, programma 's en taskcollection ");}},," ja "is de naam van het starten, it_is_initializable (), verhoging van het phpspec een   klas, taskcollectionspec,.Deze functie is wat we zeggen, bijvoorbeeld.In dit specifieke geval, noemen we het, met   zei dat shouldhavetype (),   controleren we de aard, taskcollection,.Als je van deze functie is doorgegeven aan andere dingen, dan loopt deze specificaties, en je zal zien dat het zou mislukken.Op dit punt volledig te begrijpen, en ik denk dat we moeten weten welke variabelen, die   dollar, verwijst naar de in de specificaties voor ons, wat is de dollar,,,???????En, natuurlijk, dat   dollar, verwijst naar de soort, taskcollectionspec, voorbeeld, want dit is gewoon PHP code.Maar phpspec, je behandelt, dit   dollar van je, meestal iets anders, omdat onder de motorkap, het in feite is het voorwerp van de test, het is een feit, taskcollection,   klasse.Dit gedrag is van klasse, objectbehavior, om de functie van de spec'ed volmacht.Dit betekent dat, someclassspec,   zal agent methode roept someclass, bijvoorbeeld.Op deze wijze zal moeten phpspec gewikkeld om hun waarden en die, zoals je net zag.,,, je hoeft niet te begrijpen dat het gebruik van phpspec, weet je, naar uw mening, het   dollar, en in feite is het voorwerp van de test,,,, de bouw van onze taak. Tot nu toe, en we zijn nog niet eens zijn.Maar phpspec is leeg, taskcollection, we   met klasse.En nu is het tijd om het invullen van een code, zodat dit soort nuttig.We zullen nog twee methoden: methoden, (),  , nog een taak, en, Count (), die in   methoden voor het tellen van het aantal taken.,,, nog een taak, we schrijven een code voor te schrijven, moeten we een voorbeeld voor ons talent in ons voorbeeld. We moeten proberen Om de taken toe te voegen aan het verzamelen, en om ervoor te zorgen dat het zijn taken toe te voegen.Om dit te bereiken, moeten we een (tot nu toe niet bestaan), de taken, de   klasse.Als we deze afhankelijkheid als parameter, we phpspec specificatie van de functie, automatisch een voorbeeld voor ons, dat we kunnen gebruiken.In feite, het is niet echt een voorbeeld, maar wat phpspec bedoeld, partners.Dit doel zal als een echte doel, maar phpspec kunnen we doen veel dingen, we zullen zien.Hoewel, de taken, de   soort bestaan nog niet, en nu, gewoon doen alsof.Open, taskcollectionspec,   en toevoeging van, het gebruik, de   verklaring, de taken, de   klasse en voeg voorbeelden it_adds_a_task_to_the_collection (), het gebruik van petersuhm:,,, de taak te doen,...De functie van it_adds_a_task_to_the_collection (taak taak) {% dit > toegevoegd ($taken); de dollar - > taak [0] - > moeten ($taken);}, en in ons geval, hebben we een code te schrijven, "we willen ook".We noemen het (de), methoden, en dan proberen hem op een missie voor de,,.Dan, we controleren de taak is toegevoegd aan de aanleg van variabelen, die taak.Match, shouldbe (),   is, de identiteit, de   met soortgelijke PHP, = = =,   comparator.Je kan gebruiken, shouldbe () (), shouldbeequalto,,, shouldequal (),   of shouldreturn (),   - ze allemaal hetzelfde doen, phpspec, die zal leiden tot een aantal fouten, want we hebben een taak, maar,,,,, laten we ons phpspec, herstel: de leverancier, $/bin /phpspec beschrijving "petersuhm doet taak" $leverancier /bin /phpspec die je wil dat ik het creëren van% quot% petersuhm doet taak% quot%?Y, weer op de vlucht phpspec, interessante dingen gebeurd:,, wil je dat ik het creëren van% quot% petersuhm doet, taskcollection $leveranciers /bin /phpspec ren:: ()% quot%?Is perfect.Als je in taskcollection zien,   PHP, documenten, zie je phpspec, (), voor we vullen de functie:,, <?PHP petersuhm doet in een openbare functie toe te voegen; taskcollection {($aantonen 1) {///////TODO: de logica schrijft hier}}, phpspec, nog steeds klagen, hoewel.Wij niet, als de taak, om een   array, en nog een taak:,, <?PHP petersuhm doet een klas taskcollection; openbare dollar extra taken van openbare functies {; (taak $taak) {% dit > taak [] = $taak;}}, en nu we de specificaties voor het is groen.Let op, ik moet typehint, $missie parameters.,, laten we het goed doen, laten we nog een andere taak:,, it_adds_a_task_to_the_collection (taak als functie van de taak, de taak anothertask dollar) {% dit > toegevoegd ($taken); de dollar - > taak [0] - *; ($taken); - de toevoeging van $> ($anothertask); de dollar - > taak [1] - > moeten ($anothertask);}, phpspec, werking, het lijkt erop dat we allemaal heel goed.,, de uitvoering, de graaf,   interface, we willen weten hoeveel van het mandaat. Dit is het gebruik van een interface   van normen   PHP bibliotheek grote reden (SPL), namelijk het aantal, de interface kan,  .Dit betekent dat de verwezenlijking van een soort interface, er moet een, Count (),  .,,, eerder, gebruiken we die, shouldhavetype (), is dit een, het type, de   overeen.Het gebruik van persoonlijke beschermingsmiddelen comparator, voorbeelden,   voorwerp is in feite een bepaalde categorie een voorbeeld.Er zijn vier soorten overeen, dat is hetzelfde.Een van hen is, shouldimplement (), is ons doel, dus laten we beginnen met de functie van it_is_countable, bijvoorbeeld:,, () {% dit > het gebruik van ('countable ");}, kijk naar de mooie lezen?Laten we maken dat we weg zijn, bijvoorbeeld phpspec leidt ons:,, de leverancier /bin /phpspec, die petersuhm //taskcollection 25 ✘ is de verwachte aantal voorbeelden kunnen tellen, maar een doel: [petersuhm, plannen, taskcollection].,, oké, dus niet een voorbeeld van onze klas, nummer   hebben We nog niet kunnen bereiken.Laten we de vernieuwing van ons, taskcollection, code   klasse, van de klasse, taskcollection uitvoering, nummer, onze test zal niet werken, omdat het aantal   interface, worden, er een abstracte methode, Count (), die we hebben bereikt.Een lege methode zal nu truc:,, openbare functies () {///////1.}, we gaan terug naar de groene.Op dit punt, ik graaf (),   methode niet meer, het is echt waardeloos.We schrijven een gedragscode, en we hopen dat het er is.Ten eerste, geen missie, we tellen van de functie van nul:,, de functie van naar verwachting it_counts_elements_of_the_collection () {% dat Count () - > > moeten volgen (0);}, het terug van nul,,,,, 0,.Een groene test, laten we dit oplossen tdd /bdd:,, openbare functies Count () {terugkeer 0;}, en we zijn groen, alles is goed, maar dit kan niet het gewenste gedrag.Laten we in plaats daarvan de specificaties en de uitbreiding van onze taak iets toe te voegen,   dollar, de installatie, de functie:, it_counts_elements_of_the_collection () {% dat Count () - > > moeten volgen (0); de dollar - > taak = ['foo]; de dollar - > Count () - > te zoeken (1);}, natuurlijk, we hebben een code is nog steeds terug, 0, we hebben een rode stappen.De vaststelling van dit niet zo moeilijk, we taskcollection,   categorieën nu eruit moet zien:,, <?PHP petersuhm doet een aantal taskcollection; klas uitvoering van openbare functies en openbare dollar {(taken; en de taak van de dollar) {% [] = > taak van openbare functies, taken, tel () {} terug telt ($- > taak);}}, we tellen (), een groene getest voor ons,   methode.Wat een geweldige dag.,, verwachten & beloofd, weet je nog dat ik je vertelde, phpspec kan je partner, voor het geval dit wel,  , alias automatische injectie phpspec is gevallen?Als je altijd in de schriftelijke tests, voordat je het weet dat het belachelijk en het kaartje.Als je niet te veel zorgen.Dit is de enige voorwaarden.Deze dingen zijn: de "valse" van het object, als je echte doel, maar laat je testen in isolatie.Phpspec automatisch worden de partners,   voorbeelden voor de spot en 'als je dat je het nodig hebben.  , dit is echt geweldig.Onder de motorkap, met behulp van de voorspelling van de phpspec  , dit is een uiterst vooringenomen een kader, een goede phpspec (door dezelfde vreselijke man is ingesteld).Je kunt een samenwerking in de verwachtingen (spot), zoals deze methode ",", "moeten noemen, kan je nog verplichtingen" ('), zoals deze methode zal terugkeren,   deze waarde ".En phpspec dit makkelijk te doen, zullen we doen.,,, we doen een soort, we noemen het schema,,,, kunnen gebruik maken van onze collecties.,,, de leverancier /bin /phpspec hem be "petersuhm, plannen, schema" $leverancier /bin /phpspec rennen je moet me het scheppen van% quot% petersuhm doet, todolist% quot%?In de toename van de taken in het eerste geval, nog een taak is de taak van een voorbeeld.We zullen, addtask (),   methode, niet meer dan nog een taak die we verzamelen.Het is slechts een indicatie bellen, (),   methode van de vergadering, dus dit is een perfecte plek met verwachtingen.We willen niet voor de feitelijke noemen, (),   methode, we willen er gewoon voor zorgen dat het probeert te doen.Daarnaast moeten we ervoor zorgen dat het maar één keer.Om te zien hoe we gaan en phpspec:,, <?PHP petersuhm namespace specificaties doet; het gebruik van phpspec, objectbehavior; met behulp van de voorspelling en parameters; gebruik van petersuhm, programma 's en taskcollection; het gebruik van petersuhm doet de taak todolistspec uitbreiding; klas objectbehavior {functie it_is_initializable () {% dit > shouldhavetype ('petersuhm, plannen, schema "); De functie van $it_adds_a_task_to_the_list} (taskcollection taken, als de taken) {% taak > toegevoegd ($) - > shouldbecalledtimes (1); de dollar - > taak = $taken; de dollar - > addtask ($taken);}},, in de eerste plaats, we phpspec twee partners die we nodig hebben: een opdracht en taken.En dan hebben we de taak die het verzamelen van samenwerking, dat: "in feite, (),   methode moet worden genoemd is de tijd voor de variabelen 1, de taak,   als parameter".Dit is hoe we de voorbereiding van onze samenwerking, is nu een simulatie, in onze opdracht.   dollar, eigendom, schema.Tot slot, we probeerde je te bellen, addtask (),  .,, oké, wat phpspec moet zeggen:,, de leverancier /bin /phpspec, die petersuhm //lijst van de taak van 17.De taak van de lijst van kenmerken toegevoegd aan geen taken, niet aanwezig is, de eigenschap is er niet.PHP petersuhm doet een openbare taak; todolist {});,, probeer het nog een keer, en phpspec richtsnoeren:,, wil je dat ik het creëren van% quot% petersuhm doet, todolist $leverancier /bin /phpspec lopen: addtask ()% quot%?Y is een leverancier /bin /phpspec die petersuhm //17 ✘ lijstje toevoegen aan de lijst van taken van de prognoses niet: dubbele petersuhm, programma 's en taskcollection - P4: verwachte precies 1 bellen met dubbele petersuhm, programma' s en taskcollection: \\ P4 - > toegevoegd (petersuhm doet, nauwkeurige (dubbele taak, p3: 00000000 2544d76d0000000059fcae53) maar niet. Oké, nu, en er gebeurde iets grappigs.Het nieuws gezien de verwachte een oproep: "...Dit is ons niet verwachten.Dit is omdat de oproep, addtask (),   methode,   methode, (), die niet   zei dat we verwachten dat de,.,, om terug te keren naar de groene en het invullen van de code in een lege, addtask (). De methode:,, <?PHP namespace petersuhm doet; todolist {openbare dollar taken; de functie van addtask (taak taak) {% dit > taak > toegevoegd ($);}}, terug naar Green.Het voelt goed, hè?De taken, onderzoek, laten we eens kijken naar de beloofd.We willen een methode kan ons vertellen, als er geen taken te verzamelen.Daarom kunnen we eenvoudig te controleren, Count () naar de waarden van   methode.Nogmaals, wij zijn het niet echt een voorbeeld en een echte, Count (). De methode is.We moeten ervoor zorgen dat we de code, Count (),   methode hangt af van de waarde van iets terug.,,, naar het volgende voorbeeld:,, de functie it_checks_whether_it_has_any_tasks (taskcollection $taak) {% taak Count () - > > zal de dollar (0); deze taak = - > $taken; de dollar - > hastasks () - > moeten nastreven een (pseudo);}, hebben we een taak van de partners, Count (),   methode, zal terugkeren,   nul.Dit is onze inzet.Dit betekent dat elke keer als er iemand belt, Count (),   methode, het zal terug naar nul.Dan zullen we de voorbereiding van de partners voor de missie,   onroerend goed voor ons doel.Tot slot, we proberen een methode, hastasks (), en ervoor te zorgen dat het rendement, de valse,,, phspec?En, wil je dat ik doe, het creëren van% quot% petersuhm, todolist $leverancier /bin /phpspec lopen: hastasks ()% quot%?Y is een leverancier /bin /phpspec die petersuhm //TODO 25 ✘ controleren of de taak van een verwachte fouten, maar leeg.,, Cool.Phpspec zodat we, hastasks (),   methode, is het niet verwonderlijk dat het terug van nul, nee,  , vals, en, nogmaals, dit is een gemakkelijk op te lossen:,, openbare functies hastasks () {terugkeer valse;}, we gaan terug naar de groene, maar dit is niet wat We willen.Laten we onderzoeken ze twintig missies.Dit moet terug, echt, it_checks_whether_it_has_any_tasks (functie:,, taskcollection $taak) {% taak Count () - > > (0); de dollar - > taak = $taken; de dollar - > hastasks () - > moeten nastreven een (pseudo); Die taak > Count () - > (20); de dollar - > taak = $taken; de dollar - > hastasks () - > moeten volgen (echt);}, rennen phspec krijgen we:,, de leverancier /bin /phpspec, die petersuhm //lijst van taken ✘ controleren of 25 waar is zijn taak verwacht, maar er zijn valse.,, oké, valse,   is niet echt, dus we moeten ons, verbetering van de code.Laten we, Count (), om te kijken of er een taak voor   of niet:,, openbare functies hastasks () {als ($- taken - > > Tel. (') > 0) terug waar; terugkeer valse;}, aanzienlijk.Terug naar de groene.Een gewoonte die,,,, goede voorbereiding van de specificaties, laat ze zo leesbaar mogelijk te maken.Onze laatste voorbeeld kan verbeteren, een beetje, dank phpspec aangepaste overeen.Het is makkelijk om aangepaste met alles wat we moeten doen is gedekt, getmatchers (), de methode, de erfenis, objectbehavior,.Door de uitvoering van twee stemmen die we kunnen veranderen, de specificaties ziet er als volgt uit:,, de functie it_checks_whether_it_has_any_tasks (taskcollection $taak) {% taak Count () - > > (0); de dollar - > taak = dollar; dit hastasks () - > > shouldbefalse (); $taak Count () - > > (20); de dollar - > taak = $taken; de dollar - > hastasks () - > shouldbetrue () () {} getmatchers; de functie van "echte" terugkeer [= > de functionele ($) (= = = waar de terugkeer.;}, "nee" = > de functionele ($) {terugkeer van $= = = vals;},];}, ben ik van mening dat dit ziet er goed uit.Weet je nog, de wederopbouw van uw specificaties is belangrijk, voor het behoud van hun laatste.Dat je eigen gebruik met ruim je de specificaties, een grotere leesbaarheid.,, in feite, kunnen we het gebruik van met negatieve en it_checks_whether_it_has_any_tasks (taskcollection:,, de functie van die taak) {% taak Count () - > > (0); de dollar - > taak = $taak; de dollar - > hastasks () - > shouldnotbetrue () (); de taak van graaf $- > > (20); de dollar - > taak = $taken; de dollar - > hastasks () - > shouldnotbefalse ();}, ja.Nogal Cool.,,, conclusies, al onze specificaties is groen, zien we de code hebben.,, petersuhm doet, taskcollection 10 - 15 ✔ ✔ is nog een taak, het verzamelen van 24 ✔ is nummer 29 ✔ aantal elementen petersuhm, programma 's en de taak van de petersuhm 10 ✔ is gestart, doen, ToDoList ✔ is 16 11 - 24 ✔ Controleer ✔ toevoegen aan de lijst van taken is er een Taak 3 8 gevallen (8 door de specificaties) 16 mevrouw, we hebben daadwerkelijk de omschrijving en uitvoering van het gedrag van de code nodig.Trouwens, we hebben een code is 100% van de door onze specificaties, hetgeen betekent dat de wederopbouw van de ervaring niet leiden tot angst, overeenkomstig de volgende procedure.,, ik hoop dat je inspiratie, geef phpspec proberen.Het is niet alleen een instrument - het is een ontwerp - instrumenten.Als je gewend bent phpspec (en de verschrikkelijke codegenerator), dat is moeilijk voor je om te gaan.Mensen klagen altijd over doen en tdd bdd vertragen.In mijn werk zal phpspec, ik voel me echt de tegenovergestelde manier - ik een aanzienlijke verbetering van de productiviteit.Mijn code sterker.,



Previous:
Next Page: