Primi passi con Jasmine

Sommario
Oggi è un buon momento per essere uno sviluppatore in JavaScriptSi può dire che è anche entusiasmante poiché le tecnologie che lo circondano sono un po' maturate, i browser web sono più standardizzati e ogni giorno compaiono più cose nuove con cui giocare e sperimentare.
JavaScript è un linguaggio consolidato e il web è oggi la piattaforma principale, dove abbiamo assistito all'emergere di applicazioni a pagina singola, alla proliferazione di framework MVC come AngularJS o Backbone.js, utilizzando JavaScript lato server con Nodo.js e persino applicazioni mobili create esclusivamente utilizzando HTML, CSSJavaScript con tecnologie come PhoneGap.
Fin dalle sue umili origini, JavaScript è stato incaricato di fungere da linguaggio per manipolare i dati e convalidarli nelle forme in HTML e attualmente viene utilizzato per costruire le potenti applicazioni che possiamo vedere sul web. Vedendo questo si può dire che JavaScript Ha fatto molta strada, così come gli strumenti che sono apparsi per garantire che abbiamo la stessa qualità come se fossimo in altre lingue.
Uno di questi strumenti è Gelsomino, che non è altro che un framework di sviluppo orientato al comportamento e che ci consente di creare unit test automatizzati per il linguaggio di programmazione JavaScript. Prima di entrare a pieno titolo in questo strumento, vediamo il background che ha portato al suo sviluppo nonché i concetti chiave per capire come funziona JavaScript.
Oggi nessuno dubita del potere di JavaScriptTuttavia, ci sono complicazioni quando si lavora sul lato client e uno dei motivi ovvi è che non possiamo controllare il suo ambiente di esecuzione. Sul server non abbiamo questo problema poiché possiamo eseguire una versione specifica di Nodo.js ma nel caso del browser web non possiamo dire all'utente di utilizzare una versione specifica di Cromo o Firefox.
La lingua JavaScript è definito nelle specifiche ECMAScript quindi ogni browser può avere la propria implementazione dell'ambiente per eseguirlo, causando piccole differenze o bug tra di loro. Ogni oggetto di JavaScript è mutevole quindi non abbiamo alcun tipo di controllo per impedire a un modulo di sovrascrivere parti di altri, per illustrare questo diamo un'occhiata a un piccolo segmento di codice in cui possiamo vedere quanto sia facile sovrascrivere la funzione globale console.log:
 console.log ("prova"); console.log = 'pausa'; console.log ("prova");
Vediamo la risposta da console, dove possiamo vedere chiaramente l'errore poiché abbiamo sovrascritto la funzione:

Questo modo di essere del linguaggio è stata una decisione che è stata presa nella sua progettazione, poiché ha permesso agli sviluppatori di aggiungere funzionalità mancanti, ma data questa versatilità è relativamente più facile commettere errori, anche una versione più recente del linguaggio ha introdotto il funzione Sigillo.oggetto che lo ha impedito, ma il suo supporto si è esteso solo a pochi browser.
Un altro problema che presentiamo con JavaScript è la gestione dei tipi, in altre lingue un'espressione come '1' + 1 probabilmente genererà un errore, ma in JavaScript ciò risulterebbe in 11. Questo può portare ad alcuni problemi difficili da trovare, ad esempio supponiamo di avere quanto segue:
 var a = 1, b = '5', c = 4, d = 2; var risultato = a + b + c * d; console.log (risultato);
Vediamo la risposta attraverso la console quando eseguiamo il nostro codice nel browser:

Come possiamo vedere, il risultato è stato una stringa, quindi se ci aspettavamo un numero in una funzione o routine speciale questo può causare un problema e trovare questo errore può significare sprecare qualche ora del nostro prezioso tempo di sviluppo.
È importante ricordare che i punti che abbiamo appena menzionato non sono un motivo per non usarli JavaScriptÈ semplicemente per vedere dove ha dei punti deboli ma questo non significa che sia un linguaggio scurrile, possiamo anche assicurare che le possibilità che ci presenta sono infinite in termini di sviluppo di applicazioni e ciò che è meglio, abbiamo ancora strumenti che ci aiuteranno con le migliori pratiche dello stesso.
Come abbiamo accennato, Gelsomino È un piccolo framework che ci aiuta con i nostri test unitari all'interno dei nostri sviluppi e che utilizza la filosofia dello sviluppo orientato al comportamento che spiegheremo più avanti, ma prima di continuare vediamo un concetto importante e cioè che sono test unitari.
Test unitariIl test unitari Sono pezzi di codice che testano le funzionalità delle unità nel codice della nostra applicazione, che all'inizio di questo percorso è stata lasciata allo sviluppatore con una filosofia tradizionale che si concentrava sullo sviluppo orientato al test anziché orientato al comportamento.
Ecco perché i creatori di Gelsomino ristrutturano questo modo tradizionale di test, in cui lo sviluppatore è rimasto senza un'immagine chiara di dove iniziare nel processo di test, non sapendo cosa testare e quanto grande potrebbe essere un modulo di test o anche come chiamerebbe uno di questi test . Ad esempio, se usiamo la filosofia di Gelsomino Per eseguire i test, supponiamo di avere un lettore musicale che avrà i seguenti criteri di accettazione: Dato il lettore, quando una canzone è in pausa, il lettore deve indicare che la canzone è stata messa in pausa.
Quindi possiamo prendere il criterio e dividerlo come segue:
  • Dato (Un contesto iniziale)
  • Quando (l'evento si verifica)
  • Quindi (viene intrapresa un'azione)
Gelsomino ci consente di tradurre quanto sopra in un codice che verrà scritto in modo da riflettere senza problemi i valori della nostra applicazione, che può assomigliare a questo:
 description ("Player", function () {describe ("Quando la canzone è in pausa", function () {it ("Deve indicare che la canzone è in pausa", function () {});});});
Come possiamo vedere i nostri criteri sono stati trasferiti a Gelsomino senza troppi problemi, dove possiamo dire che ogni criterio è tradotto in un test unitario.
Potremmo già dare un'occhiata a come Gelsomino gestisce i criteri e li traduce nella sua sintassi creando gli unit test per esso, ma per arrivarci vediamo prima come ottenere il framework. Per fare ciò, andiamo alla pagina del progetto e lo scarichiamo:

INGRANDIRE

Quando lo decomprimi dobbiamo andare nella cartella dist, lì troveremo tutte le distribuzioni di Gelsomino ad oggi, da dove iniziare ad usarlo dobbiamo selezionare la distribuzione che vogliamo, preferibilmente la più recente e decomprimerla nella cartella del nostro progetto, entrare nella cartella ed eseguire il file SpecRunner.html:

Gelsomino Include di default alcuni esempi di alcuni unit test, dove il file SpecRunner.html si occupa di collegare il codice Jasmine che include i file sorgente e i file per il test, vediamo il suo contenuto:
 Jasmine Spec Runner v2.2.0 
Come possiamo vedere, è abbastanza semplice e ci permette di definire una struttura di base per i nostri test, dandoci un aiuto su da dove cominciare in questo mondo di unit test. Va da sé che è una buona idea dare un'occhiata al codice della nostra distribuzione di Gelsomino per familiarizzare con il modo in cui funziona.
È importante ricordare che Gelsomino non solo limitato al codice scritto con puro JavaScript, possiamo testare quelle applicazioni costruite con Backbone.js o AngularJS, anche la sua versatilità va molto oltre e ci permette di eseguire test lato server nel caso che stiamo utilizzando Nodo.js.
RaccomandazioneGelsomino È un framework che ci aiuta molto in termini di unit test, tuttavia i concetti utilizzati in esso non sono così semplici, è supportato da alcune pratiche avanzate di JavaScript come generare l'HTML utilizzando la funzione createDom() inserire gli elementi al suo interno, per citare alcune di queste caratteristiche, quindi consigliamo di fare un giro attraverso la documentazione di JavaScript per essere molto più preparati per i futuri tutorial.
Con questo abbiamo terminato questo tutorial, dove potremmo muovere i primi passi con Gelsomino, esplorando un po' la motivazione della creazione di strumenti su cui testare JavaScript e come lo sviluppo orientato al comportamento ci aiuta a creare test migliori, vedendo anche come Gelsomino è un framework abbastanza flessibile per i test, che ci consente di utilizzare la stessa istanza per testare tutti i tipi di codice in JavaScript nelle nostre applicazioni.
wave wave wave wave wave