Första steget med Jasmine

Innehållsförteckning
Idag är en bra tid att vara utvecklare i JavaScriptDet kan sägas att det är till och med spännande eftersom teknologierna som omfattar det har mognat ganska mycket, webbläsare är mer standardiserade och varje dag dyker det upp fler nya saker att leka och experimentera med.
JavaScript är ett etablerat språk och webben är den viktigaste plattformen idag, där vi har sett uppkomsten av enkelsidiga applikationer, spridningen av MVC -ramverk som t.ex. AngularJS eller Backbone.js, med JavaScript på serversidan med Node.js och även mobilapplikationer som skapats enbart med HTML, CSS Y JavaScript med teknik som PhoneGap.
Från dess ödmjuka början har JavaScript ansvarat för att fungera som ett språk för att manipulera data och validera dem i formulär i HTML och för närvarande används den för att bygga de kraftfulla applikationer som vi kan se på webben. När man ser detta kan man säga det JavaScript Det har kommit långt, liksom de verktyg som har dykt upp för att säkerställa att vi har samma kvalitet som om vi vore på andra språk.
Ett av dessa verktyg är Jasmin, som inte är annat än ett beteendeorienterat utvecklingsramverk och som gör att vi kan skapa automatiska enhetstester för programmeringsspråket JavaScript. Innan vi går in helt med det här verktyget, låt oss se bakgrunden som ledde till dess utveckling samt viktiga begrepp för att förstå hur det fungerar JavaScript.
Idag tvivlar ingen på kraften i JavaScriptDet finns dock komplikationer när vi arbetar på klientsidan och en av de uppenbara orsakerna är att vi inte kan kontrollera dess exekveringsmiljö. På servern har vi inte detta problem eftersom vi kan köra en specifik version av Node.js men när det gäller webbläsaren kan vi inte berätta för användaren att använda en specifik version av Krom eller Firefox.
Språket JavaScript definieras under specifikationerna ECMAScript så att varje webbläsare kan ha sin egen implementering av miljön för att köra den, vilket gör att det finns små skillnader eller buggar mellan dem. Varje objekt av JavaScript det är muterbart så vi har ingen form av kontroll för att hindra en modul från att skriva över bitar av andra, för att illustrera detta låt oss titta på ett litet kodesegment där vi kan se hur lätt det är att skriva över den globala funktionen console.log:
 console.log ('test'); console.log = 'break'; console.log ('test');
Låt oss se svaret per konsol, där vi tydligt kan se felet eftersom vi har skrivit över funktionen:

Detta sätt att vara ett språk var ett beslut som togs i dess design, eftersom det gjorde det möjligt för utvecklare att lägga till saknade funktioner i det, men med tanke på denna mångsidighet är det relativt lättare att göra misstag, även en nyare version av språket introducerade fungera Objekt. Tätning vilket förhindrade detta men dess stöd sträckte sig bara till några webbläsare.
Ett annat problem som vi presenterar med JavaScript är hantering av typer, på andra språk kommer ett uttryck som '1' + 1 förmodligen att ge ett fel, men i JavaScript detta skulle resultera i 11. Detta kan leda till några svåråtkomliga problem, till exempel anta att vi har följande:
 var a = 1, b = '5', c = 4, d = 2; var resultat = a + b + c * d; console.log (resultat);
Låt oss se svaret genom konsolen när vi kör vår kod i webbläsaren:

Som vi kan se var resultatet en sträng, så om vi väntade oss ett nummer i en speciell funktion eller rutin kan det orsaka problem och att hitta detta fel kan innebära att man slösar bort några timmar av vår dyrbara utvecklingstid.
Det är viktigt att nämna att de punkter vi just har nämnt inte är en anledning att inte använda JavaScriptDet är helt enkelt att se var det har vissa svagheter men det betyder inte att det är ett dåligt språk, vi kan till och med försäkra att möjligheterna som det ger oss är oändliga när det gäller applikationsutveckling och vad som är bättre, vi har fortfarande verktyg som vi de kommer att hjälpa till med bästa praxis av samma.
Som vi nämnde, Jasmin Det är ett litet ramverk som hjälper oss med våra enhetstester inom vår utveckling och som använder filosofin om beteendeinriktad utveckling som vi kommer att förklara senare, men innan vi fortsätter ska vi se ett viktigt koncept och det är att de är enhetstester.
EnhetstesterDe enhetstester De är bitar av kod som testar enheternas funktionalitet i koden för vår applikation, som i början av denna väg utvecklaren lämnades med en traditionell filosofi som fokuserade på testorienterad utveckling istället för beteendeorienterad.
Det är därför skaparna av Jasmin de omstrukturerar detta traditionella sätt att testa, där utvecklaren lämnades utan en klar bild av var han skulle börja i testprocessen, utan att veta vad de skulle testa och hur stor en testmodul kan vara eller ens vad de skulle kalla ett av dessa tester . Till exempel om vi använder filosofin om Jasmin För att utföra testerna, anta att vi har en musikspelare som kommer att ha följande acceptanskriterier: Med tanke på spelaren, när en låt är pausad måste spelaren ange att låten var pausad.
Så vi kan ta kriteriet och dela det enligt följande:
  • Givet (ett inledande sammanhang)
  • När (händelsen inträffar)
  • Sedan (en åtgärd vidtas)
Jasmin tillåter oss att översätta ovanstående till en kod som kommer att skrivas på ett sätt som speglar värdena i vår applikation utan problem, som kan se ut så här:
 beskriv ("Spelare", funktion () {beskriv ("När låten är pausad", funktion () {den ("Den måste indikera att låten är pausad", funktion () {});});});
Som vi kan se överfördes våra kriterier till Jasmin utan större besvär, där vi kan säga att varje kriterium översätts till ett enhetstest.
Vi kunde redan ta en titt på hur Jasmin den hanterar kriterierna och översätter dem till sin syntax och skapar enhetstester för det, men för att komma dit ska vi först se hur vi får ramverket först. För att göra detta går vi till projektsidan och laddar ner det:

FÖRSTORA

När vi packar upp den måste vi gå till mappen dist, där hittar vi alla distributioner av Jasmin hittills, där vi ska börja använda det måste vi välja den distribution vi vill ha, helst den senaste och packa upp den i mappen för vårt projekt, ange mappen och kör filen SpecRunner.html:

Jasmin Den innehåller som standard några exempel på vissa enhetstester, där filen SpecRunner.html är ansvarig för att länka Jasmine -koden som innehåller källfilerna och filerna för testning, låt oss se dess innehåll:
 Jasmine Spec Runner v2.2.0 
Som vi kan se är det ganska enkelt och tillåter oss att definiera en basstruktur för våra tester, vilket ger oss en hjälp om var vi ska börja i denna värld av enhetstester. Det är självklart att det är en bra idé att ta en titt på koden för vår distribution av Jasmin för att bekanta oss med hur det fungerar.
Det är viktigt att nämna det Jasmin inte bara begränsad till kod skriven med ren JavaScript, vi kan testa de applikationer som är byggda med Backbone.js eller AngularJS, även dess mångsidighet går mycket längre och tillåter oss att utföra tester på serversidan om vi använder Node.js.
RekommendationJasmin Det är ett ramverk som hjälper oss mycket när det gäller enhetstester, men begreppen som används i det är inte så enkla, det stöds av vissa avancerade metoder för JavaScript som att generera HTML med hjälp av funktionen createDom () för att infoga elementen i den, för att nämna några av dessa egenskaper, så vi rekommenderar att du går igenom dokumentationen av JavaScript att vara mycket mer förberedd för framtida självstudier.
Med detta avslutade vi denna handledning, där vi kunde ta våra första steg med Jasmin, gå lite genom motivationen att skapa verktyg att testa på JavaScript och hur beteendeinriktad utveckling hjälper oss att skapa bättre tester, också se hur Jasmin är en ganska flexibel ram för testning, så att vi kan använda samma instans för att testa alla typer av kod JavaScript i våra applikationer.
wave wave wave wave wave