Prvi koraci s Jasminom

Sadržaj
Danas je dobro vrijeme za razvoj JavaScriptMože se reći da je čak uzbudljivo budući da su tehnologije koje ga obuhvaćaju prilično sazrijele, web preglednici su standardiziraniji i svakim danom pojavljuju se sve nove stvari s kojima se može igrati i eksperimentirati.
JavaScript je ustaljeni jezik, a web je danas glavna platforma na kojoj smo vidjeli pojavu aplikacija za jednu stranicu, širenje MVC okvira, poput AngularJS ili Okosnica.js, koristeći poslužitelj JavaScript sa Node.js pa čak i mobilne aplikacije stvorene isključivo pomoću HTML, CSS Y JavaScript s tehnologijama poput PhoneGap.
JavaScript je od svojih skromnih početaka bio zadužen da služi kao jezik za manipulaciju podacima i njihovu provjeru u obrascima u HTML i trenutno se koristi za izradu moćnih aplikacija koje možemo vidjeti na webu. Gledajući ovo može se reći da JavaScript Došao je dug put, kao i alati koji su se pojavili kako bi osigurali da imamo istu kvalitetu kao da smo na drugim jezicima.
Jedan od tih alata je Jasmin, koji nije ništa drugo nego razvojni okvir orijentiran na ponašanje i koji nam omogućuje stvaranje automatiziranih jediničnih testova za programski jezik JavaScript. Prije nego što u potpunosti uđemo s ovim alatom, pogledajmo pozadinu koja je dovela do njegovog razvoja, kao i ključne koncepte kako bismo razumjeli kako radi JavaScript.
Danas nitko ne sumnja u moć JavaScriptMeđutim, postoje komplikacije pri radu na strani klijenta, a jedan od očitih razloga je taj što ne možemo kontrolirati njegovo okruženje izvođenja. Na poslužitelju nemamo ovaj problem jer možemo pokrenuti određenu verziju Node.js ali u slučaju web preglednika ne možemo reći korisniku da koristi određenu verziju Krom ili Firefox.
Jezik JavaScript definirano je u specifikacijama ECMAScript tako da svaki preglednik može imati vlastitu implementaciju okruženja za njegovo pokretanje, uzrokujući male razlike ili greške među njima. Svaki objekt od JavaScript On je promjenjiv pa nemamo nikakvu kontrolu koja bi spriječila modul da prepiše komade drugih, kako bismo to ilustrirali pogledajmo mali segment koda u kojem možemo vidjeti kako je lako prebrisati globalnu funkciju konzola.log:
 console.log ('test'); console.log = 'break'; console.log ('test');
Pogledajmo odgovor putem konzole, gdje možemo jasno vidjeti grešku budući da smo prepisali funkciju:

Ovakav način postojanja jezika bila je odluka koja je donesena u njegovu dizajnu, budući da je programerima dopuštala da mu dodaju nedostajuće funkcionalnosti, ali s obzirom na ovu svestranost relativno je lakše pogriješiti, čak je i novija verzija jezika uvela funkcija Objekt.brtva što je to spriječilo, ali njegova se podrška proširila samo na nekoliko preglednika.
Još jedan problem s kojim se predstavljamo JavaScript je rukovanje vrstama, u drugim jezicima izraz poput '1' + 1 vjerojatno će izazvati pogrešku, ali u JavaScript ovo bi rezultiralo 11. To može dovesti do nekoliko teško pronaći problema, na primjer pretpostavimo da imamo sljedeće:
 var a = 1, b = '5', c = 4, d = 2; var rezultat = a + b + c * d; console.log (rezultat);
Pogledajmo odgovor putem konzole kada pokrenemo naš kôd u pregledniku:

Kao što vidimo, rezultat je bio niz, pa ako smo očekivali broj u posebnoj funkciji ili rutini, to može uzrokovati problem, a pronalaženje ove pogreške može značiti gubljenje nekoliko sati našeg dragocjenog razvojnog vremena.
Važno je napomenuti da točke koje smo upravo spomenuli nisu razlog da ih ne koristite JavaScriptJednostavno je vidjeti gdje ima nekih slabosti, ali to ne znači da je to loš jezik, čak možemo uvjeriti da su mogućnosti koje nam predstavlja beskonačne u smislu razvoja aplikacija i što je bolje, još uvijek imamo alate koji mi ćemo im pomoći s najboljom praksom istih.
Kao što smo spomenuli, Jasmin To je mali okvir koji nam pomaže u našim jedinstvenim testovima u okviru našeg razvoja i koji koristi filozofiju razvoja usmjerenog na ponašanje koju ćemo objasniti kasnije, ali prije nego što nastavimo, da vidimo važan koncept, a to je da su to jedinični testovi.
Jedinstveni testoviThe jedinični testovi Oni su dijelovi koda koji testiraju funkcionalnosti jedinica u kodu naše aplikacije, a na početku ovog puta programer je ostao s tradicionalnom filozofijom koja se usredotočila na razvoj usmjeren na testiranje umjesto na ponašanje.
Zato su tvorci Jasmin restrukturiraju ovaj tradicionalni način testiranja, u kojem je programer ostao bez jasne slike odakle započeti u procesu testiranja, ne znajući što bi trebao testirati i koliki bi mogao biti testni modul ili čak kako bi nazvali jedan od ovih testova . Na primjer, ako se poslužimo filozofijom Jasmin Za provođenje testova pretpostavimo da imamo glazbeni player koji će imati sljedeće kriterije prihvaćanja: S obzirom na player, kada je pjesma pauzirana, igrač mora naznačiti da je pjesma pauzirana.
Dakle, možemo uzeti kriterij i podijeliti ga na sljedeći način:
  • Dano (početni kontekst)
  • Kada (Događaj se dogodi)
  • Zatim (poduzima se radnja)
Jasmin omogućuje nam da gore navedeno prevedemo u kôd koji će biti napisan na način da bez problema odražava vrijednosti naše aplikacije, što može izgledati ovako:
 description ("Player", function () {описаti ("Kad je pjesma pauzirana", function () {it ("Mora označavati da je pjesma pauzirana", function () {});});});
Kao što vidimo naši kriteriji su preneseni na Jasmin bez većih problema, gdje možemo reći da je svaki kriterij preveden u jedinični test.
Već smo mogli pogledati kako Jasmin obrađuje kriterije i prevodi ih u svoju sintaksu stvarajući jedinične testove za njega, ali kako bismo tamo došli, prvo ćemo vidjeti kako prvo doći do okvira. Da bismo to učinili, idemo na stranicu projekta i preuzimamo je:

POVEĆAJTE

Prilikom raspakiranja moramo otići u mapu dist, tamo ćemo pronaći sve distribucije Jasmin do danas, gdje ga početi koristiti, moramo odabrati željenu distribuciju, po mogućnosti najnoviju i raspakirati je u mapu našeg projekta, unijeti mapu i izvršiti datoteku SpecRunner.html:

Jasmin Standardno uključuje neke primjere nekih jediničnih testova, gdje datoteka SpecRunner.html je zadužen za povezivanje Jasmine koda koji uključuje izvorne datoteke i datoteke za testiranje, pogledajmo njegov sadržaj:
 Jasmine Spec Runner v2.2.0 
Kao što vidimo, vrlo je jednostavno i omogućuje nam definiranje osnovne strukture za naše testove, dajući nam pomoć o tome odakle započeti u ovom svijetu jediničnih testova. Nije potrebno spominjati da je dobra ideja pogledati kod naše distribucije Jasmin kako bismo se upoznali s načinom rada.
Važno je to spomenuti Jasmin ne samo da je ograničen na kôd napisan čistim JavaScriptom, već možemo testirati i one aplikacije napravljene pomoću Okosnica.js ili AngularJS, čak i njegova svestranost ide mnogo dalje i omogućuje nam izvođenje testova na strani poslužitelja u slučaju da koristimo Node.js.
PreporukaJasmin To je okvir koji nam puno pomaže na putu jediničnih testova, međutim koncepti koji se u njemu koriste nisu tako jednostavni, podržani su određenim naprednim praksama JavaScript kao što je generiranje HTML -a pomoću funkcije createDom () za umetanje elemenata u njega, spominjanje nekih od ovih karakteristika pa preporučujemo šetnju kroz dokumentaciju JavaScript biti puno spremniji za buduće vodiče.
Ovime smo završili ovaj vodič, s kojim smo mogli napraviti prve korake Jasmin, prolazeći kroz motivaciju stvaranja alata za testiranje JavaScript i kako nam razvoj usmjeren na ponašanje pomaže u stvaranju boljih testova, također uvidjevši kako Jasmin je prilično fleksibilan okvir za testiranje koji nam omogućuje korištenje iste instance za testiranje svih vrsta koda u JavaScript u našim aplikacijama.
wave wave wave wave wave