test din php codebase med enhancephp

, tester din php codebase med enhancephp,,,,, andel,,,,,,,, 39,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, du ved det, jeg ved det.vi skal teste vores kode mere, end vi gør.en del af grunden til, at vi ikke er, tror jeg, at vi ved ikke præcis, hvordan.jeg skiller mig af med den undskyldning i dag. jeg vil lære dig at prøve på med enhancephp ramme.,,,,,,, enhancephp, jeg vil ikke prøve at overtale dig til at teste din kode, og vi skal ikke diskutere prøvekørt udvikling.det er sket før. på nettuts +.i denne artikel, nikko bautista forklarer, hvorfor test er en god ting, og der skitseres en tdd arbejdsgang.læs den en dag, hvis du ikke er bekendt med tdd.han bruger simpletest bibliotek for hans eksempler, så hvis du ikke ser ud til enhancephp, du kan prøve simpletest som et alternativ, som jeg sagde, at vi vil bruge de enhancephp.det er en fin lille php library-a enkelt fil, der indeholder en masse test funktioner.,, begynde med over til deres downloade side og tager den seneste version af den ramme, vi skal bygge et simpelt validering klasse til test.det vil ikke gøre for meget, bare vende tilbage, sandt, hvis punktet passerer validering eller falsk, hvis det ikke gør det, oprette en enkel lille projekt:,, vi gør det her, er en delvis tdd - mode, så lad os starte med et par tests.,, skrive test, lille klasse skal validere tre ting: e - mail - adresser, brugernavne og telefonnumre, men før vi kommer til at skrive virkelige test, vi bliver nødt til at sætte vores klasse:, <?php klasse validation_test udvides. styrke. testfixture {offentligheden fælde () ($- > val = nye validation();}}, dette er vores start; bemærker, at vi udvider den klasse, en styrke. testfixture,.ved at gøre det, vi kom enhancephp ved, at enhver offentlig metoder i denne klasse er test, med undtagelse af metoder, der er oprettet, og igennem.som du måske tror, disse metoder løbe før og efter alle dine tests (før og efter hver).i dette tilfælde er vores fælde, metode, vil skabe en ny, validering, instans og overdrager det til en ejendom på vores eksempel. forresten, hvis du er forholdsvis ny i folkesundhedsprogrammet, kan du ikke være bekendt med, at en styrke. testfixture, syntaks: hvad er der med den her?det er på namespacing for dig, se dok. hvis du ikke er bekendt med det, så prøver!, e - mail - adresser, lad os starte med validering af e - mail - adresser.som du kan se, jeg laver en grundlæggende prøve er ret enkel: offentlig funktion validates_a_good_email_address () ($resultat = $- > val - > validate_email ("john @ doe. com"). styrke. hævde: gælder ($resultat)}, vi kalder metode, vi vil prøve, giver det et gyldigt e - mail - adresse, og at oplagre, $resultat.så vi hånd, $resultat, at den gælder, metode.denne metode tilhører, og forbedre) hævder, at klasse. vi ønsker at sørge for, at vores gruppe vil forkaste ikke e - mail - adresser.så lad os prøve for: offentlige funktion reject_bad_email_addresses () ($val_wrapper = \\ forbedre \\ kerne: getcodecoveragewrapper (»validering«); $val_email = $- > get_scenario ('validate_email) $adresser = system ("john", "jo!hn @ doe. com "," john @ doe. "" jo * hn @ doe. com "); for hvert ($adresser som $adr) ($val_email - > med ($adr) - > forvente (forkert)} $val_email - > verifyexpectations();} det indfører et sejt træk i enhancephp: scenarier.vi vil gerne teste nogle ikke - e - mail - adresser for at sikre, at vores metode vil vende tilbage, falske.ved at skabe et scenario, der hovedsagelig pakke et tilfælde af vores klasse i nogle enhancephp godhed, skrive meget mindre kode til test af alle vores ikke - adresser.det er det, $val_wrapper, er: en modificeret tilfælde af vores, validering, klasse.så $val_email er scenariet objekt, lidt som en genvej til, validate_email metode. så har vi en række betingelser, som ikke bør godkende som e - mail - adresser.vi flyver over, at vifte med en, for hvert, loop.bemærk, hvordan vi afprøve: vi opfordrer de med metode på vores scenario objekt, giver det de parametre for den metode, vi tester.så kalder vi det, forventer, at metoden med, og det, som vi forventer at få tilbage. endelig kræver vi det scenarie er, verifyexpectations, metode, så den første test er skrevet om, hvordan vi styrer dem?,, prøver, før vi rent faktisk tage prøverne, vi bliver nødt til at skabe vores, validering, klasse.indenfor, lib. validering. php, start med det:, <?php klasse validering (offentlig funktion validate_email ($adresse) {}}, i test. folkesundhedsprogrammet, er, så trækker vi det hele sammen:, <?php kræver "sælger /enhancetestframework. folkesundhedsprogrammet" skal "l /validering. folkesundhedsprogrammet" skal "test /validation_test. folkesundhedsprogrammet". forbedre \\ kerne: runtests(); vi vil kræve, at alle de nødvendige dokumenter.så kalder vi det, runtests, metode, som finder vores test. nu kommer den her del.tænd en server, - - og du får en god html output:,, meget godt, ikke?nu, hvis du har folkesundhedsprogrammet i terminalen, løb det er i terminalen:,, enhancephp opdager, at du er i et andet miljø, og tilpasser sin produktion på passende vis.en side fordel af dette, er, at hvis man bruger en ide, som phpstorm, der kan køre enhed prøver, du kan se det endelige output i den ide. du kan også få xml - og aflytte produktionen, hvis det er det du vil, bare gå, jeg styrke. templatetype: xml, eller en styrke. templatetype: op til, runtests, en metode til at få den nødvendige produktion.bemærk, at køre det i terminalen vil også producere command-line resultater, uanset hvad du går til, runtests,., at test for at bestå, lad os skrive den metode, som giver vores test til at passere.som de ved, er det, validate_email,.på toppen af, validering, klasse, lad os definere en offentlig ejendom, offentlige $email_regex = //[\\ w + - _).] + @ [\\ w \\.] + \\. \\ w + $/«, jeg lægger det i en offentlig ejendom, således at hvis brugeren ønsker at erstatte det med deres egne regex, de kunne.jeg bruger denne enkle version af en e - mail regex, men du kan erstatte det med din favorit regex, hvis du vil. så er der metoden: offentlig funktion validate_email ($adresse) {tilbage preg_match ($- > email_regex $adresse) = = 1}, nu løber vi de prøver igen, og skrive flere prøver, tid til flere tests: brugernavne, lad os skabe en test for brugernavne nu.vores krav er, at det skal være en 4 - 20 tegnstreng, der kun består af ord tegn eller perioder.så: offentlige funktion validates_a_good_username () ($resultat = $- > val - > validate_username ("some_user_name. 12"). styrke. hævde: gælder ($resultat)}, nu, hvad med et par brugernavne, der ikke burde godkende: offentlig funktion rejects_bad_usernames () ($val_username = $- > get_scenario ('validate_username) $brugernavne = system ("navn med rum", "nej!exclaimation!- "," ts "," thisusernameistoolongitshouldbebetweenfourandtwentycharacters "); for hvert ($brugernavne som $navn) ($val_username - > med ($navn) - > forvente (forkert)} $val_username - > verifyexpectations();}, dette er meget lig vores. reject_bad_email_addresses, funktion.bemærker dog, at vi kalder det, get_scenario, metode: hvor er det kommet fra?jeg er informa scenariet oprettelse funktionalitet i private metode, på bunden af vores klasse:, privat funktion get_scenario ($metode) ($val_wrapper = \\ forbedre \\ kerne: getcodecoveragewrapper (»validering«); tilbage. forbedre \\ kerne: getscenario ($val_wrapper $metode)}, vi kan bruge dette i vores reject_bad_usernames og erstatte det scenario, skabelse, reject_bad_email_addresses, så godt.fordi det er en privat metode, enhancephp ikke vil prøve at køre det som en normal prøve, hvordan det er med offentlige midler. vi vil gøre disse test består ligeledes, hvordan vi lavede det første sæt passere:,&#øverst....offentlige $username_regex = //[\\ w \\.] (4,20} $/«.&#og metode....offentlig funktion validate_username ($brugernavn) {tilbage preg_match ($- > username_regex $brugernavn) = = 1}, det er ret grundlæggende, selvfølgelig, men det er alt, hvad der er nødvendigt for at opfylde vores mål.hvis vi vil have en forklaring i tilfælde af fejl, kan du gøre sådan noget, offentlig funktion validate_username ($brugernavn) ($len = strlen ($brugernavn); hvis ($len < 4



Previous:
Next Page: