Første trin med Jasmine

Indholdsfortegnelse
I dag er et godt tidspunkt at være udvikler på JavaScriptDet kan siges, at det er endda spændende, da de teknologier, der omfatter det, er modnet en hel del, webbrowsere er mere standardiserede, og hver dag dukker der flere nye ting op, som man kan lege og eksperimentere med.
JavaScript er et etableret sprog, og internettet er den vigtigste platform i dag, hvor vi har set fremkomsten af ​​enkeltsideansøgninger, spredningen af ​​MVC -rammer som f.eks. VinkelJS eller Backbone.js, ved hjælp af JavaScript på serversiden med Node.js og endda mobilapplikationer, der udelukkende er oprettet ved hjælp af HTML, CSS Y JavaScript med teknologier som PhoneGap.
Siden den ydmyge begyndelse har JavaScript haft ansvaret for at tjene som sprog til at manipulere dataene og validere dem i formularerne i HTML og i øjeblikket bruges det til at bygge de kraftfulde applikationer, som vi kan se på nettet. Når man ser dette, kan man sige det JavaScript Det er nået langt, såvel som de værktøjer, der er vist til at sikre, at vi har samme kvalitet, som hvis vi var på andre sprog.
Et af disse værktøjer er Jasmine, som ikke er mere end en adfærdsorienteret udviklingsramme, og som giver os mulighed for at oprette automatiserede enhedstest til programmeringssproget JavaScript. Inden vi går helt ind med dette værktøj, lad os se baggrunden, der førte til dets udvikling, samt nøglebegreber for at forstå, hvordan det fungerer JavaScript.
I dag er der ingen, der tvivler på kraften i JavaScriptDer er imidlertid komplikationer ved arbejde på klientsiden, og en af ​​de indlysende årsager er, at vi ikke kan kontrollere dets udførelsesmiljø. På serveren har vi ikke dette problem, da vi kan køre en bestemt version af Node.js men i tilfælde af webbrowseren kan vi ikke fortælle brugeren at bruge en bestemt version af Chrome eller Firefox.
Sproget JavaScript er defineret under specifikationerne ECMAScript så hver browser kan have sin egen implementering af miljøet for at køre det, hvilket får der til at være små forskelle eller fejl mellem dem. Hvert objekt af JavaScript det kan ændres, så vi ikke har nogen form for kontrol for at forhindre et modul i at overskrive stykker af andre, for at illustrere dette lad os se på et lille kodesegment, hvor vi kan se, hvor let det er at overskrive den globale funktion console.log:
 console.log ('test'); console.log = 'pause'; console.log ('test');
Lad os se svaret efter konsol, hvor vi tydeligt kan se fejlen, da vi har overskrevet funktionen:

Denne måde at være sproget på var en beslutning, der blev truffet i dets design, da det tillod udviklere at tilføje manglende funktionaliteter til det, men i betragtning af denne alsidighed er det relativt lettere at lave fejl, selv en nyere version af sproget introducerede fungere Objekt. Segl hvilket forhindrede dette, men dets understøttelse strakte sig kun til et par browsere.
Et andet problem, som vi præsenterer os for JavaScript er håndteringen af ​​typer, på andre sprog vil et udtryk som '1' + 1 sandsynligvis rejse en fejl, men i JavaScript dette ville resultere i 11. Dette kan føre til et par svært at finde problemer, f.eks. antag at vi har følgende:
 var a = 1, b = '5', c = 4, d = 2; var resultat = a + b + c * d; console.log (resultat);
Lad os se svaret gennem konsollen, når vi kører vores kode i browseren:

Som vi kan se, var resultatet en streng, så hvis vi havde forventet et tal i en særlig funktion eller rutine, kan dette forårsage et problem, og at finde denne fejl kan betyde at spilde et par timer af vores dyrebare udviklingstid.
Det er vigtigt at nævne, at de punkter, vi lige har nævnt, ikke er en grund til ikke at bruge JavaScriptDet er simpelthen at se, hvor det har nogle svagheder, men det betyder ikke, at det er et dårligt sprog, vi kan endda sikre, at de muligheder, det giver os, er uendelige med hensyn til applikationsudvikling, og hvad der er bedre, vi har stadig værktøjer, der vi de vil hjælpe med den bedste praksis af det samme.
Som vi nævnte, Jasmine Det er en lille ramme, der hjælper os med vores enhedstest inden for vores udvikling, og som bruger filosofien om adfærdsorienteret udvikling, som vi vil forklare senere, men før vi fortsætter, lad os se et vigtigt koncept, og det er, at de er enhedstest.
EnhedstestDet enhedstest De er stykker kode, der tester enhedernes funktionaliteter i vores applikations kode, som i begyndelsen af ​​denne vej udvikleren stod tilbage med en traditionel filosofi, der fokuserede på testorienteret udvikling i stedet for adfærdsorienteret.
Derfor er skaberne af Jasmine de omstrukturerer denne traditionelle måde at teste på, hvor udvikleren stod uden et klart billede af, hvor de skulle starte i testprocessen, uden at vide, hvad de skulle teste, og hvor stort et testmodul kunne være, eller endda hvad de ville kalde en af ​​disse tests . For eksempel hvis vi bruger filosofien om Jasmine For at udføre testene, antag at vi har en musikafspiller, der vil have følgende acceptkriterier: I betragtning af afspilleren, når en sang er sat på pause, skal afspilleren angive, at sangen var sat på pause.
Så vi kan tage kriteriet og opdele det som følger:
  • Givet (en indledende kontekst)
  • Når (begivenheden finder sted)
  • Derefter (der foretages en handling)
Jasmine giver os mulighed for at oversætte ovenstående til en kode, der vil blive skrevet på en måde, der afspejler værdierne i vores applikation uden problemer, som kan se sådan ud:
 beskrive ("Spiller", funktion () {beskrive ("Når sangen er sat på pause", funktion () {den ("Den skal angive, at sangen er sat på pause", funktion () {});});});
Som vi kan se blev vores kriterier overført til Jasmine uden store problemer, hvor vi kan sige, at hvert kriterium oversættes til en enhedstest.
Vi kunne allerede se på hvordan Jasmine det håndterer kriterierne og oversætter dem til sin syntaks, der skaber enhedstestene til det, men lad os først se, hvordan vi får rammen først for at komme dertil. For at gøre dette går vi til projektsiden og downloader det:

FORSTØRRE

Når vi pakker det ud, skal vi gå til mappen dist, der finder vi alle distributioner af Jasmine til dato, hvor vi skal begynde at bruge det, skal vi vælge den distribution, vi ønsker, helst den nyeste og pakke den ud i mappen i vores projekt, indtaste mappen og udføre filen SpecRunner.html:

Jasmine Det indeholder som standard nogle eksempler på nogle enhedstest, hvor filen SpecRunner.html har ansvaret for at forbinde Jasmine -koden, som indeholder kildefilerne og filerne til testning, lad os se dens indhold:
 Jasmine Spec Runner v2.2.0 
Som vi kan se, er det ganske enkelt og giver os mulighed for at definere en grundstruktur for vores test, hvilket giver os en hjælp til, hvor vi skal starte i denne verden af ​​enhedstest. Det siger sig selv, at det er en god idé at tage et kig på koden for vores distribution af Jasmine for at gøre os bekendt med den måde, det fungerer på.
Det er vigtigt at nævne det Jasmine ikke kun begrænset til kode skrevet med ren JavaScript, vi kan teste de applikationer, der er bygget med Backbone.js eller VinkelJS, selv dens alsidighed går meget længere og giver os mulighed for at udføre tests på serversiden i tilfælde af, at vi bruger Node.js.
HenstillingJasmine Det er en ramme, der hjælper os meget i forbindelse med enhedstest, men de begreber, der bruges i det, er ikke så enkle, det understøttes af visse avancerede metoder til JavaScript såsom at generere HTML ved hjælp af funktionen createDom () at indsætte elementerne i det, for at nævne nogle af disse egenskaber, så vi anbefaler at gå en tur gennem dokumentationen af JavaScript at være meget mere forberedt på fremtidige selvstudier.
Hermed afsluttede vi denne tutorial, hvor vi kunne tage vores første skridt med Jasmine, gå lidt gennem motivationen til at skabe værktøjer til at teste på JavaScript og hvordan adfærdsorienteret udvikling hjælper os med at oprette bedre tests, også se hvordan Jasmine er en temmelig fleksibel ramme for test, så vi kan bruge den samme instans til at teste alle former for kode i JavaScript i vores applikationer.

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave