javascript geavanceerde technologie, geavanceerde technologie in de eenheid getest.,,,,,,,,,, 6, 25 - eenheid,,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen. En, nu, iedereen weet dat de test wordt de ontwikkeling en het testen van de eenheid.Maar je was met de test kader voldoende?,,, wordt in deze handleiding, wil ik kort ingaan op enkele van de meer geavanceerde technologie, voor je zorgen, omdat deze handleiding heeft betrekking op het aantal geavanceerde betreft, neem ik aan dat je reeds vóór de test met de eenheid en de kennis en het begrip.Als het niet, dit is je begint een uitstekend artikel: vereenvoudiging van het gebruik van de termen -, zullen we sinonjs.Dit is een onafhankelijk kader dat voorziet in een API - ja, belachelijk, spionage en nog veel meer.Kun je je de test van een selectie van het kader, maar in deze handleiding zullen wij gebruik maken van het sinonjs busterjs, met ingebouwde schepen.,, & die busterjs, installatie busterjs rennen in een terminal de volgende beschikking gegeven: installatie - g van het kryptoniet, dat moet je de knoop, v0.6.3 of bijgewerkt, busterjs moet buster.js, profiel zegt, ben je de bron en het testen van de documenten te creëren, waar, buster.js, de volgende documenten en plakken, reactieve toewijzing = module.exports; toewijzing van [] = (rootpath nettuts "test": "/", het milieu: "browser", "" /. Bron: [J 's ". [" specificaties /* test: de test. J' s "]}, en nu zeggen we dat we de test kan worden gevonden in de MAP, en Europa, specificaties,De uitvoering van de code in, "R, MAP.Je kan de naam van verwijzingen, of een wildcard, wat we hier doen.Let op, het is allemaal relatief. Rootpath, we zijn aangewezen, je kan veel van de configuratie, wil je.Dit maakt het mogelijk om de verschillende groepen van de test, test, en de man je moet opnieuw de server in verband met de browser.Je kan bij de uitvoering van de server in de terminal, man, je bent.Moet je zien, als volgt:,,, open nu je browser, wijst zij op de HTTP://lokale: 1111.Je moet de volgende foto 's zien:,, klik op de grote, vangen browser, druk op de knop te vangen van een browser.Je test wordt in de browser, zolang je het open gelaten.Je kunt je wil zoveel mogelijk de browser, laat je in meerdere browsers test van het vermogen van (zelfs goede ie).Je kunt busterjs, ook voor de uitvoering van de tests en de PhantomJS je niet een browser, maar dit gaat verder dan het toepassingsgebied van deze richtlijn, moet het etiket de server en een browser deze les die je van de rest van de tests, eenvoudig, de aard van de destructieve tests, in een nieuwe terminal etiket /raam.Als je nog wat testen, zie je een soortgelijke onder de output:,,,, test op dubbel, begonnen we te lachen en de strook van, laten we erover praten, test, test verdubbelt, twee is een uiterlijk en gedrag meer zoals het echt is.Ze worden gebruikt in de bij de test gebruikte het werkelijke doel is moeilijk of niet welkom is, en ze laten testen te vergemakkelijken, is het vaak veel gebruikt, stuntman, en dat is niet de echte acteur in de scène in de film, in deze handleiding, we hebben betrekking op de volgende soorten tests:,, enkele en dubbele spion. Lachen, dat is een spion, de registratie van alle telefoontjes.Het volgen van de parameters, de terugkeer van de waarde, de waarde, de afwijking (indien van toepassing), het is anoniem functioneren, kan het gebruik van bestaande functies te pakken.Als een verpakking die niet op de een of andere manier, wijziging van het niveau van de functie; de oorspronkelijke functie nog zal worden uitgevoerd, zoals gewoonlijk, hier is wat je creëert een spion: spionnen = sinon, var. Spion (); dit zou het creëren van een anonieme parameters opgenomen uitzonderingen,,,,,, en alle telefoontjes ontvangen naar de waarde var - spion = landbouw. Spionage (my_function); deze spion, waarin de taken van de spion = landbouw, var. Spionage (object, "methode"); het heeft een spion en spionage, object.method, ter vervanging van de oorspronkelijke methode.- nog steeds de tenuitvoerlegging van de oorspronkelijke methode, maar zal de registratie van alle telefoons, kunt u via de nieuwe, de spion in de spion, variabele of bellen, object.method, direct.En object.method, kunt u bellen met het herstel van de spionnen. (), of de methode van de objecten. (), terug naar de spion object heeft de volgende eigenschappen en de methode:, spion. Withargs (arg1 1, [...]); de totstandbrenging van een spion, maar ontvangt wanneer de opname van parameters die in het verleden, withargs,., spion. Callcount, om terug te keren naar de opname nummer, spion, dat terug, echt, als spion worden ten minste één keer., spion. Calledonce, rendement, echt, als spion zegt dat de tijd, om precies te zijn, een spion (arg1 1,...), is teruggekeerd, als, spion, ten minste één keer voor, en de parameters.Het kan worden gebruikt voor de gedeeltelijke Match.Sinonjs controles alleen de parameters en de feitelijke argumenten voor.Dus, een oproep ontvangen die parameter (en eventueel andere) terug, echt.Als je wilt, kan je in een string of het voorwerp van de afwijkingen voor specifieke soorten of voorwerpen getest, var spycall = spion. Getcall (n); en de terugkeer van 'n spion van de,, call.Een spion moet zijn eigen API - en hier kan worden gevonden: de spion van API - en spion. Parameters, die elk een reeks parameters.De spion. Parameters [0], is in de eerste oproep ontvangen van een reeks parameters, de spion. Parameters [1], is een reeks parameters die tweede telefoon, enzovoort, spion. Reset (), opnieuw een spion van de staat, het is maar voor een klein deel van je methode.Alle beschikbare methoden voor de volledige lijst van geneesmiddelen, hier de dossiers controleren: spion voorbeeld, nu laten we kijken naar een voorbeeld van het gebruik van een spion.In de volgende test ons onderzoek als dit. '(), gebruik dit. Ajax ().Dat doen we, spion, ing:. Ajax (),., man. Test ("spion." {demonteren: functie () () (); de Ajax. {"moeten noemen, wanneer het gebruik van dit jquery.ajax.": de functie) (landbouw), de spion (". Ajax");). (de "gebruiker"); dringt erop aan dat de (. Ajax. Calledonce);}}); de oorspronkelijke methode, is niet van invloed op de nog in uitvoering.We pakken hem op een spion kan de registratie van de telefoon, de test van de spion, we schrappen, jquery.ajax, door een beroep te doen op de (),.,.,, ',' is een test, twee van de acties van het programma.Voor het gebruik van 'niet echt, echt, dat een deel van de code werk., een voorschot op een telefoontje, en het kan me niet schelen hoeveel keer, het heet, met inbegrip van de orde, of met zijn eigen argumenten, de strook van API - en volledige - de spion.Als spion, ze kan een bestaande anonieme of de verpakking van de functie.In tegenstelling tot de spion, ze zal, in plaats van uitvoering van de functie van de verpakking.In plaats daarvan, kan je wat kaartjes aangewezen wanneer moeten noemen, want je kan controleren hoe de korte gedrag, je kan makkelijk je code in het testen van verschillende stromen, of om te voorkomen dat een slecht gedrag wordt uitgevoerd, is dat de landbouw een van de 'landbouw' = API, var. '(); Dit zal leiden tot een anonieme welke functies de VAR -' = landbouw. '(object, "methode"); het vervangt, object.method, met welke functie.Als dat een bestaande methoden, het blijkt dat de methode niet worden uitgevoerd, als methode (), is een voorwerp.De oorspronkelijke functie kan worden genoemd, het voorwerp van de methoden voor het herstel van de (), of '. (). De var -' = landbouw,.,. ',' (DST); alle object.Het is vaak een betere praktijken, kort voor het individu, is het niet makkelijk om de onverwachte gedrag '.,. Withargs (arg1 1, [...]); de methode, welke alleen voor die argumenten, Stub. Inkomsten (waarde); dat voor de waarde van' terug.,., '. Returnsarg (index); om voor het debat - index van de opbrengsten;,'. Returnsarg (0), leiden tot een 'terug naar de eerste parameter, Stub. Gooit, dus op korte termijn (); een uitzondering.Of je kan gooien, de aard van de vergissing, bijvoorbeeld door middel van een strookje. ("de lijst"), en hier vindt u volledige ADI: strookje voorbeeld, API, gebruik te maken van een korte de eenvoudigste methode is het creëren van een anonieme functie: kaartjes, man. Test ("voorbeeld" {"'gebruik van anonieme'": de functie) (call - back - = landbouw var. '(); de auditie. Terug naar de ("resultaten"); de bewering. Gelijk aan (tweede ronde), (de "resultaten");}}); dit is een ander voorbeeld.Het toont aan hoe de code '- methode om een bepaalde weg:, man. Test (de "gebruiker" {geregeld: functie) (this.user = nieuwe gebruikers ({naam: John, leeftijd: 24, hobby' s: "koffie"});}, demontage: functie) (gegevens opslagplaats de opname. De ();}, "moet de terugkeer van% quot% bescherming van de gebruikers met succes is opgeslagen in de databank% quot% als" - functie) (landbouw. '(databanken, voor het behoud van een proces "). De terugkeer van (echt); var resultaat = deze gebruiker. SAVE (); dat gelijk is aan de bescherming van de gebruikers (." succes ");}, behoud van de gebruiker naar% quot%% quot% fouten als in de gegevensbank zijn opgeslagen niet": de functie) (landbouw - database.Voor het behoud van een proces "). De terugkeer van een (pseudo); var resultaat = deze gebruiker. Save (); de bewering. Gelijk aan (resultaten voor de gebruikers, de fout te redden");}});, boven ons, de testen, de klas van het gebruik van het bewaren van gegevens, de database van de klassen.Ons doel is om te testen, gebruikers, als in de databank met de juiste boodschap op de juiste informatie, kan het de gebruikers van gegevens.We willen het goede en het slechte scenario 's, in de produktie, de databank, kan van alles doen voor de opslag van de gegevens (koppeling naar een echte databank, wat Ajax noemen, enz.) zijn niet geïnteresseerd in de test.Het kan zelfs op een negatieve invloed op onze resultaten.Als een bepaald punt in de database, klasse is gebroken en we willen, gegevensbank, klasse van de eenheid getest om te onderbreken en de instructies van onze problemen.Het gebruik van andere soorten, gegevensbank, als een afhankelijkheid moet nog steeds werken zoals verwacht.De afhankelijkheid van de spot of 'Laten we het doen, is het gebruik van een van deze sterke argumenten in deze test, gebruiken we' voorgeprogrammeerd, gegevensbank saverecord (), de methode gedrag.Dit kunnen we testen code weg, we moeten voor onze test, na elke test die we aan de telefoon, de methode. (), nemen we de originele herstel van de methode, in bovenstaand voorbeeld we 'al, telefoon, gegevensbank, saverecord ().We kunnen ook een beperking van onze ', er is een verzameling van de parameters noemen, hier is hoe het argument van kracht op grond van de verschillende acties, bijvoorbeeld:, man. Test ("'", "{korter moet het gedrag van verschillende op basis van bewijs": de functie) (call - back - = landbouw var. '(); /' methode in drie verschillende methoden, gebaseerd op de parameters van de call - back -. Withargs ("succes"), terug naar de (echt); de auditie. Withargs ('getorder "). De terugkeer van (['pizza", "ijsje"]); terugbellen. Withargs een (pseudo). Investeringen ("mijn fout"); elke bewering (call - back - /controle strookje ("succes"); bevestigen. Gelijk aan (call - back - ('getorder "), ['pizza", "ijsje"]); - te -Een (pseudo)} vangst (e) {} gelden (call - back -. Gooi ("mijn fout"), "uitzondering" mijn fout niet gegooid ");}});,, lach is', de verwachtingen,.Ze laten Je verificatie, het gedrag van een software, in plaats van ze te controleren, de dingen die je kunt doen met de normale beweringen, en hier is een lijst van de simulatie van de landbouw -, var = landbouw. Simulatie (DST); dit zal leiden tot een simulatie van een object.Het object niet wijzigen, maar terug naar het gewenste doel te voorzien voor de verwachtingen, var = spot. Verwacht wordt dat de (de "methode"), die met analoge functies, obj.method, en terug.Dat heeft z 'n eigen API, zullen we in de toekomst, van de spot. (); en het herstel van de oorspronkelijke functie van alle spot voor analoge. Na verificatie van de simulatie, (); alle verwachtingen.Als het niet aan alle verwachtingen, is een uitzondering.Dit zal ook het herstel van de oorspronkelijke functie van de methode van de lach van de hele stam, maar ook de verwezenlijking van API, met voorbeelden, laten we nu eens kijken hoe we dat dit, gebruikers, we praten over het voorbeeld van het gebruik van de strook van, weet je nog hoe het te gebruiken, database.saverecord, methode?Hebben we nog nooit schreef een test, om ervoor te zorgen dat de gebruikers, in feite wordt deze methode de juiste is, we zijn gewoon, dat zal het zijn.En we hebben geen tests om na te gaan of de communicatie tussen deze twee doelstellingen, maar we kunnen de volgende test door te schrijven, Buster. Test (de "gebruiker" {geregeld: functie () {VAR userdata = this.userdata = {naam: John, leeftijd: 24, hobby 's: "koffie"); this.user = nieuwe gebruikers (gegevens van de gebruikers);}, "moet worden gebruikt voor het opslaan van gegevens van de database gebruiker": functie () {VAR spot = landbouw. Simulatie (gegevensbank); simulatie. Verwacht wordt dat de ('saverecord "). Withexactargs (deze gegevens). Als (); Deze gebruiker. Save (); omdat de spot. (de);}});, zoals je kunt zien, hebben we een object van spot, gegevensbank, en duidelijk.TED, hoe verwacht, het behoud van de bestanden, bekend als de methode.In deze test van de methode die wordt aangeduid als we maar één keer, en de gebruikers van gegevens, object, als de enige parameter.De verwachtingen zijn, omdat we in ons model, ons niet nodig om elke bewering, maar we zeggen met behulp van, om na te gaan of de verwachte spot. Omdat de (), als voor het simuleren van. Meer dan een keer, of met andere dan de gespecificeerde parameters, het wel een fout, waardoor de test falen,,,,, laten we eens kijken naar een ander voorbeeld, spot kan van pas komen, als je ooit in de systemen en de eenheid getest pubsub is, zou je kunnen zien als volgt: "de uitvoering van de gebruikers, moeten de juiste gegevens": de functie) (var pubsub is = nieuwe pubsub (), genaamd = vals en eventdata = {foo: "artikel"}, call - back - = functie (gegevens) (kaartD = (= = = = = = = = gegevens eventdata);}; pubsub is. Het abonnement ("nieuws" call - back -); pubsub is. De bekendmaking ("boodschap" Event Data); gelden (genoemd);}, het testen van gebruikers zeggen wanneer een geval is gepubliceerd, call - back - functie, meer niet. Want het is om na te gaan of de parameters voor de juiste.Laten we de verbetering van de controle door de auditie, in een echte ironie: "moeten worden uitgevoerd, de juiste gegevens (het gebruik met)": functie () {VAR pubsub is = nieuwe pubsub (), eventdata = {foo: "artikel"), call - back - = landbouw. Nep (). Withexactargs (event data) (de); pubsub is. Als een abonnement ("nieuws". -); pubsub is. De bekendmaking ("nieuws", in geval van gegevens); terugbellen. Omdat de ();}, makkie.Het is ook verbetering van de leesbaarheid van de test.De verwachtingen,,,,,,. (). Withexactargs (), de methode is, verwacht.De landbouw biedt een groot aantal verschillende verwachtingen, kan je met je lachen.Hier is wat ik wil: verwacht. Ten minste (n), de methode die wordt aangeduid als de verwachtingen, de kleinste, 'n keer, verwacht. De meeste van de methode (n) wordt genoemd, de grootste,, n keer kijken. Nooit verwacht (), methode noem, verwachtingen. (). Aanpassing van de methoden voor de te verwachten, om precies te zijn, een verwacht. Positieve (n), de methode die bekend staat als de positieve verwachtingen,' n keer, verwacht (arg1 1. Withargs,...), de methode en de verwachtingen van de parameters die worden genoemd, kunnen er andere, in de hoop dat withexactargs (arg1 1.,...), de methode en de verwachtingen van de parameters die worden genoemd, maar niet de andere, uit te kijken, omdat de (.), door de verwachtingen en uitzonderingen, als niet aan de verwachtingen kan de volledige lijst.Hier vinden de grondstoffen: verwachtingen, verwachtingen, kan je deze verwachtingen van de inhoud van de keten tot aan je hart.Dus dit is volledig doeltreffend zijn, de landbouw. Simulatie (DST). Verwacht wordt dat (die). Withexactargs (data). Ten minste (1). De meeste (3); en een veelheid van methoden, kan dat op dezelfde simulatie en var = landbouw (Dst. Simulatie van analoge); ('method1. Verwacht wordt dat "). Ten minste (1). De meeste (3); simulatie. Verwacht wordt dat de ('method2"). Withargs (data). C (); en zelfs veel verwachten, ook voor de landbouw, var =. Simulatie (DST); ('mymethod. Verwacht wordt dat withargs (").'foo"). Ten minste (1). De meeste (3); simulatie. Verwacht wordt dat de ('mymethod "). Withargs ('bar"). (4); verwacht moet voldoen aan de test, en nu hebben we de dubbele testen, laat een heel ander gesprekDe huur, maar ook geweldig:, reizen in de tijd.In de eenheid, testen, reizen in de tijd, ik ben niet altijd buigen in eenheid testen van tijd en ruimte, maar als ik dat doe, ik buster.js + sinon.js ~ Brian Ridder, cujo.js, gebruik je regelmatig op de timer, settimeout,,,, of zo setinterval, een vertraging van een deel van de code. De executie?Als dat zo is, dan kan je met zo 'n test: de test, Buster ("eggtimer", "call - back - methode (uit te voeren in een milliseconde": functie (doen) {///////- standaard test busterjs 250 this.timeout = 6000; var spot = landbouw. NEP () (); eggtimer. 2. (5000, simulatie); settimeout (functie) (lacht). Omdat de asynchrone aard omdat; ///////(///////settimeout, vertellen we de busterjs als we getest. (:);}, 5001);}}); de validering van de test, als eggtimer.start methoden voor de uitvoering van een tijdje terug. Na.Maar om dat te doen, het wachten op de vijf seconden om je, elke keer als je testen.En stel je tien test is afhankelijk van de settimeout, zodat je de suite, binnenkort is het heel langzaam, en je zal beginnen te haten om het te runnen, gelukkig, sinonjs voor de timer, namaak, dat laten we de klok en de browser reizen in de tijd vooruit... Goeie genade!Kunnen we door het gebruik van sinon usefaketimers (). De methode.Door dit te doen, sinonjs zal het creëren van een klok object en de dekking van de standaard en hun de timer.De klok terug object alleen twee methoden: de klok. Tik (tijd), de klok vooruit tik, tijd, MS.Dit maakt alle timer op een bepaalde tijd wordt uitgevoerd, de klok. De (), meestal in de voltooiing van de telefoon, demontage, een testprocedure (vervolg).Het zet de timer functie terug aan de browser lokale mensen valse timer voorbeeld, nu we weten dat valse Timer, laten we eens kijken hoe we met hen te herschrijven van de test: de test boven, Buster ("eggtimer (pseudo - Timer)" {instellingen: functie () {this.clock = landbouw. Usefaketimers ();}, demonteren: functie () {de klok. De ();}, een call - back - methode "moet in de uitvoering: functie () {VAR spot = landbouw. Nep () (); eggtimer. 2. (5000, simulatie); deze klok (5001); de simulatie te controleren ().;}}); de eerste verhoging, van ons, van montage en demontage van methoden en het herstel van de browser herschrijven, de klok voor en na elke test, en dan, clock.ti- (de) in de tijd, vooruit.Want als de veronderstelling sinonjs synchronisatie, we niet langer nodig, gedaan (), de telefoon.Als een extra voordeel voor onze test is nu makkelijker te lezen, het is een snelheid:,,,, we moeten het testen van de totale duur van de uitvoering van de test van 5012ms 12ms!Onze redding is MS, dit is wat we bij de eerste test, de waarde van de gebruikte settimeout (), bel!Door het gebruik van valse Timer, tien van de test is niet zo erg.Het zal slechts een paar milliseconden verhoging van het totaal van de uitvoering van de test, en niet aan de test per milliseconde.De klok van de landbouw, de functie en de timer, hier kan aanvullende informatie vinden: de klok API, conclusies, we zijn naar de verschillende geavanceerde technieken die je kunt gebruiken javascript eenheid testen.We worden spionnen, ',, lachen, en hoe de timer, nep browser, we sinonjs. Dit kader, maar in de meeste andere test (zoals Jasmine) voor deze functie van de steun (hoewel hun eigen API), als je de test javascript eenheid meer diepgaande kennis van belang, ik. De test aanbevolen rijden javascript ontwikkeling van het boek (christelijke Johnson van de sinonjs. De Schepper, en ik hoop dat dit artikel is zeer nuttig zijn, maar je hebt een nieuwe technologie, kan je je de volgende keer een schrijven van een eenheid te testen.Dank je, lezen.
In de eenheid in
Previous:Verzoek om
Next Page:De meteoor