de begynder guide til enhed test: at opbygge et målbart stik af

, begynder guide til enhed test: opbygningen af et målbart stik af,,,,, 1,,,,,,,,, 3,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss., i første del af denne serie, vi tog en højtstående se prøvningsmetodologierne og gav nogle tilfælde, hvorfor det er gavnligt for os at begynde at gøre i vores wordpress projekter.vi fandt også tid til at fælde phpunit og wordpress tests med henblik på at begynde at opbygge vores første testbare stik af. i den sidste artikel, skal vi fastlægge en metode for enhed, afprøvning, begynde at medtage det i vores arbejde, og gå væk med et fuldt funktionsdygtigt (om end simpel) stik af, at det også har en lille gruppe test for at sikre, at den virker helt som forventet.,,, en enhed prøvningsmetodologi, når det kommer til testning, der er generelt gøre det på to måder:,,, skriv din test, så skriv koden til din test -, skrive din kode, så skriv prøver at gå,,, min erfaring er, at den første fremgangsmåde er altid bedre.indrømmet, det er praktisk umuligt at gøre inden for rammerne af en ansøgning, der allerede eksisterer, men hvis man starter fra bunden –, som vi –, det er en bedre løsning, og her er derfor, når du har skrevet en ansøgning, du ved hvordan det fungerer.det kan således være meget vanskeligt at skrive test at strække anvendelse, når de i sig selv ved hvordan det skal fungere,.,, som, jeg synes, at det er bedre at skrive test, først.denne vej, din test ikke kun omfatte den måde, hvorpå det program, skulle arbejde, men det er også en form for dokumentation, der viser, hvilke funktioner er beregnet til og vil i sidste ende føre til en fiasko, da den funktionalitet er ikke fungerer, som det skal, med det i tankerne, vi skal bygge det simpelt metode:,,, skrive en test og løb.det vil naturligvis ikke, at forsøg på at skrive koden for den prøve at bestå, hvis testen går vi videre til næste opgave. vi gentager processen, indtil det er forbi.,,, som igen, vores stik af vil give en særlig velkomment budskab til de besøgende på grundlag af, om de har slået igennem på stedet fra google eller twitter.vi skal også skrive det på en sådan måde, at det bliver lettere at udvide med yderligere tjenester, bør du gøre det i fremtiden.,,, at opbygge et målbart stik af, på dette punkt, er det på tide at begynde at skrive en kode; i modsætning til de fleste projekter, vi kommer ikke til at springe i wordpress specifik kode endnu.i stedet skal vi slukke vores enhed test klasse.hvis du har opbygget deres stik af arbejde baseret på det, vi delte i den første post, eller hvordan vi har sat det på github, så du skal have en, hello_reader_tests.php, fil, der ligger i din test /wordpress test, fortegnelse.du behøver ikke at følge denne organisation, men det vil hjælpe på vejen gennem projektet.,, lad os slukke den enhed test klasse:,, require_once ("... /... /stik af. folkesundhedsprogrammet) klasse hello_reader_tests udvider wp_unittestcase {} //sidste klasse, nu forsøge til testen med fra terminalen ved hjælp af folkesundhedsprogrammet enhed.hvis du kører på enhed i din lokale mamp anlæg, skal du være i stand til at komme ind på:,,, $/ansøgninger /mamp /bin /php /php5.3.6/bin/phpunit. /hello_reader_tests. php,,, på dette punkt, så skulle du se en fiasko:,,,,,, det er godt!det betyder, phpunit er installeret og løbende, og at deres wordpress afprøvning ramme er klar til at gå.de test, ikke blot fordi vi har ikke skrevet nogen test.lad os komme i gang,.,, vores første test, lad os skrive en test for at sikre, at vores stik af er igangsat, instantierede og klar til prøvningen.minder om tidligere i den første artikel, som lagres en henvisning til de tilfælde af hej læser i folkesundhedsprogrammet, $globals, vifte.dette er, hvordan vi får adgang til, at f.eks. ved hjælp af afprøvning rammer.så lad os opdatere vores enhed test for at se sådan, at bemærke, at på grund af rummet, jeg rejser ud kode bemærkninger, men fuldt bemærkede, stik af og test vil være tilgængelige på github.,, require_once ("... /... /stik af. folkesundhedsprogrammet) klasse hello_reader_tests udvider wp_unittestcase (private $stik af, fungerer setup() (moder: setup(). $- > stik af = $globals ['hello-reader ']} //ende fælde funktion testplugininitialization() {$- > assertfalse (null = = $- > stik af)} //ende testplugininitialization} //sidste klasse, navnlig har vi nedsat en henvisning til de tilfælde af stik af, så vi kan få adgang til den i vores enhed prøver.vi bruger, fælde, en metode til at tage henvisningen til stik af fra $globals,.bemærk dog, at vi har indført en ny funktion, testplugininitialization,.denne funktion, kontrollerer, at den henvisning, vi har her i den fælde, metode ikke er ugyldig.,, hvis du gentages prøvningerne, skal du få en at test og terminalen skal se sådan ud:,,,, der er en vigtig takeaway her:, konstaterer, at den fælles opgave, vi har givet ovenfor et klart formål: at kontrollere, at stik af er blevet igangsat.dets funktion navn er klar og indeholder en enkelt hævde erklæring.det er en god måde at model, vores sidste test, primært fordi det gør det nemt at finde insekter, når de dukker op.tænk over det her: hvis de omfatter en række forskellige hævde udsagn i en enkelt funktion, vil det være vanskeligt at afgøre, hvilket bekræfter erklæring er ikke, den første funktion, nu hvor vi har fået præsenteret for, hvordan man skriver enhed prøver, løb enhed prøver, og vurdere, hvordan de passere eller hvor de ikke, lad os begynde at implementere funktioner for stik af.vi er nødt til at fælde et filter for indhold, da vi skal være forsynet med teksten til begyndelsen af indholdet.i forbindelse med den metode, som vi har defineret tidligere i denne artikel, lad os skrive vores test.,, denne test vil se, om vi har fremsat en række forslag til den første del af post:,, funktion testaddwelcomemessage() {$- > assertequals ("test - indhold" $- > stik af - > add_welcome_message (det er f.eks. efter indhold.den simulerer, at wordpress ville vende tilbage når betragter en blog post. "), add_welcome_message() statsråd velkomment budskab til post indhold. ');} //ende testaddwelcomemessage,, hvis du løber testen, præcis som det er, det vil ikke mislykkes – i stedet, phpunit vil vende tilbage en fatal fejl, fordi metoden ikke defineret i stik af.så lad os sige det nu.ajourføre stik af at se sådan ud:,, klasse hello_reader {funktion __construct() {add_filter ('the_content, system (& $, add_welcome_message')} //ende konstruktøren offentlig funktion add_welcome_message ($indhold) {} //ende add_welcome_message} //sidste klasse, nu forsøge at testen.testen skal ikke bombe, men du skulle se en fiasko og et klart budskab om, hvorfor den test mislykkedes:,, 1) hello_reader_tests: testaddwelcomemessage add_welcome_message() statsråd velkomment budskab til post - indhold.det hævdes, at den forventede ikke matcher test indhold, og i overensstemmelse med den metode, vi ønsker at gøre denne prøvning består.for at gøre det, er vi nødt til at sørge for, at post - indhold, indeholder den række af tekst – i dette tilfælde, test indhold, med henblik på at gøre det forbi.så lad os prøve det her.ajourføring af den tilsvarende funktion i stik af vedlægge snoren, før indholdet:,, offentlig funktion add_welcome_message ($indhold) (tilbage 'test indhold ".$indhold;} //ende add_welcome_message, og igen, vi gentages prøvningen, kun for at se, at det ikke lykkes.hvis du bemærker, at vores test, er det, fordi det ser ud til at se vores indhold, er lig med den test indhold, snor.i stedet har vi brug for at sikre, at kæde starter om indholdet.det betyder, at vi har behov for at ajourføre vores test.heldigvis har en phpunit assertcontains funktion.så lad os opdatere vores kode til at bruge det:,, funktion testaddwelcomemessage() {$- > assertcontains ("test indhold, $- > stik af - > add_welcome_message (det er f.eks. efter indhold.den simulerer, at wordpress ville vende tilbage når betragter en blog post. "), add_welcome_message() statsråd velkomment budskab til post indhold. ');} //ende testaddwelcomemessage, endnu en gang, gentages testen, og du vil se, at testen nu passerer.fedt!nu skal vi skrive beskeder - - for mennesker, som kommer fra twitter og mennesker, der kommer fra google., velkommen til vores twitter besøgende, er der en række forskellige måder, som vi kan se, hvordan brugeren er ankommet til en bestemt side.nogle gange kan vi kontrollere værdier i $_get, system, vi kan afhøre den $_server, system, eller man kan kontrollere en brugers samling.med henblik på dette eksempel, vi skal lede efter "twitter. com", der findes i $_server ['http_request ".jeg siger det bare, så du kan følge med i, hvad vi laver i kodeksen,.,, så generelt, at den, add_welcome_message, bør undersøge, om anmodningen er kommet fra twitter og tilpasse budskabet på passende vis.da vi er i gang med prøvning af hvert stykke funktionalitet, - - kan vi skrive en funktion, der kan vurdere, om anmodningen kommer fra twitter.så lad os skrive en ny test:, i stik af:,, offentlig funktion is_from_twitter() {} //ende is_from_twitter, i test:,, funktion testiscomingfromtwitter() ($_server ['http_referer '] = http: //twitter. com ". $- > asserttrue ($- > stik af - > is_from_twitter(), is_from_twitter() vil vende tilbage, når de henviser lokalitet er twitter.');} //ende testiscomingfromtwitter, er vi naturligvis sjov med det, http_referer, værdi, men det er i orden med henblik på dette eksempel.det er stadig: testen, vil det mislykkes, og så bliver vi nødt til at gennemføre funktion i stik af, at det passere:,, offentlig funktion is_from_twitter() {tilbage strpos ($_server ['http_referer '], twitter. kom) > 0} //ende is_from_twitter,, rerunning testen bør resultere i en at test.men vent –, vi er nødt til at være fuldstændig.lad os sikre, at vi har en prøve for at kontrollere, at denne funktion ikke når henviseren er ikke fra twitter.,, funktion testisnotcomingfromtwitter() (//grin med den http_referer under testen og ledsager postede $_server ['http_referer '] = http: //facebook. com ". $denne - > assertfalse ($- > stik af - > is_from_twitter(), is_from_twitter() vil vende tilbage, når de henviser lokalitet er twitter.');} //ende testisnotcomingfromtwitter, se, at vi har ajourført, http_referer, og vi har ændret sig, asserttrue, til assertfalse,.at alt andet er korrekte, løb de test, og de bør gå.,, at gentage de samme for google, med en tilpasset besked til google vil kræve det samme, som vi gjorde for twitter, prøver, http_referer, og så vender rigtigt eller forkert for hjælper funktion.så, for at undgå, at overflødige, jeg holder dette afsnit er så præcist som muligt.de samme procedurer skal følges med hensyn til twitter.,, vi slukker den hjælper funktion i stik af:,, offentlig funktion is_from_google() {} //ende is_from_google, så vi slukker den test:,, funktion testiscomingfromgoogle() ($_server ['http_referer '] = http: //google. com "$- > asserttrue ($- > stik af - > is_from_google(), is_from_google() vil vende tilbage, når de henviser lokalitet er google.');} //ende testiscomingfromgoogle,, at test, som det er nu, vil det resultere i en fiasko.så lad os gennemføre, is_from_google(), funktion:,, offentlig funktion is_from_google() {tilbage strpos ($_server ['http_referer "," google. kom) > 0} //ende is_from_twitter, og nu, bør prøven passerer.men vi er nødt til at være fuldstændig, så lad os skrive den manglende test til at antage, at den funktion, vil ikke vende tilbage, når brugerne kommer fra et andet sted:,, funktion testisnotcomingfromgoogle() (//grin med den http_referer under testen og ledsager postede $_server ['http_referer '] = http: ////////facebook. com ". $- > assertfalse ($- > stik af - > is_from_google(), is_from_google() vil vende tilbage, når de henviser lokalitet er google.');} //ende testisnotcomingfromgoogle, endelig, løb din test.at alt andet er korrekt, bør du har seks passerer test.,, at trække det alle sammen, at vi på dette punkt har vi brug for til at begynde med skik velkommen budskaber til vores brugere.det eneste problem er, at vi bliver nødt til at refactor vores indledende test, der er kontrol af "test indhold." nu er vi nødt til at indføre test for følgende tilfælde:,,, når brugeren kommer fra twitter, siger vi, "velkommen fra twitter.", når brugeren kommer fra google, siger vi, "velkommen fra google!",, når brugeren kommer fra et andet sted, vil vi ikke prepend noget.,,, så lad os fjerne de test, vi skabte tidligere, testaddwelcomemessage, i stedet for at tilføje tre nye prøver.,, først skal vi tilføje en test, der kontrollerer twitter velkomment budskab., i stik af, vil vi reducere det, add_welcome_message, til dette:,, offentlig funktion add_welcome_message ($indhold) (tilbagevenden $indhold;} //ende add_welcome_message,, og vi vil tilføje twitter - test, for det første:,, funktion testdisplaytwitterwelcome() (//prøver http_referer for twitter $_server ['http_referer '] = http: //twitter. kom, $- > assertcontains ("velkommen fra twitter.$- > stik af - > add_welcome_message (det er f.eks. efter indhold.den simulerer, at wordpress ville vende tilbage når betragter en blog post. "), add_welcome_message() statsråd velkomment budskab til post indhold. ');} //ende testdisplaytwitterwelcome, på dette punkt, det er gammeldags, ikke?løb, test vil mislykkes.gennemføre den, add_welcome_message, til at se sådan ud:,, offentlig funktion add_welcome_message ($indhold) (hvis ($- > is_from_twitter()) ($indhold = velkommen fra twitter.. $indhold;} //, hvis afkast $indhold;} //ende add_welcome_message, sig det igen, og det vil gå over.den næste er google test:,, funktion testdisplaygooglewelcome() (//prøver http_referer for google $_server ['http_referer '] = http: //google. com ". $- > assertcontains (" velkommen fra google.$- > stik af - > add_welcome_message (det er f.eks. efter indhold.den simulerer, at wordpress ville vende tilbage når betragter en blog post. "), add_welcome_message() statsråd velkomment budskab til post indhold. ');} //ende testdisplaygooglewelcome, afprøve, har det mislykkes, ajourføre, add_welcome_message i stik af, indeholder en kontrol ved hjælp af hjælper funktion, vi skrev tidligere:,, offentlig funktion add_welcome_message ($indhold) (hvis ($- > is_from_twitter()) ($indhold = velkommen fra twitter.. $indhold;} andre, hvis ($- > is_from_google()) ($indhold = velkommen fra google.. $indhold;} //, hvis afkast $indhold;} //ende add_welcome_message, på dette punkt, bør du have en fuldt fungerende stik af, der er syv passerer enhed prøver!,,, konklusioner, som du kan se, enhed afprøvning indføres et nyt niveau for udvikling, men kan betale betydeligt i bevarelse, velorganiserede og testes kode.som din ansøgning vokser til stadighed prøver for at kontrollere, at deres projekter fungerer som forventet, kan give det mening.det er naturligvis et lille eksempel på, hvordan enhed kontrol fungerer.anvendelsen af disse metoder kan betale sig i meget større og /eller komplicerede projekter. endelig, du kan finde dette stik af, wordpress tests, og hej læser enhed prøver fuldt kommenterede github.,

Failing Tests
Passing Tests



Previous:
Next Page: