lunedì 17 marzo 2014

Il tuo breve resoconto di meglio di test JavaScript


Provate ad usare Karma, Jasmine, e Istanbul per il flusso di lavoro di test JavaScript
By Jonathan Freeman
Lasciatemi dire che questo modo più semplice possibile: è necessario testare il codice JavaScript. Sì, ho capito come è facile trascinare i piedi quando non si conoscono gli strumenti che rendono il test rapido e indolore per voi. Ecco perché io sono qui per aiutare. Nei miei primi giorni di test, la mia più grande hangup è stata la fatica di configurazione e l'esecuzione di test. Il "test corridore" è stato al centro del dolore: Si trattava di una pagina HTML che include il framework di test, tutti i miei file JavaScript, e tutti i miei file di test. Per eseguire i miei test, avevo bisogno di aprire la pagina in un browser ed eseguirlo per vedere i risultati. Quando un test fallito, mi piacerebbe risolvere qualche codice, tornare al browser e aggiornare - o meglio, di test su più browser e li rinfresco, guardando singolarmente per ottenere risultati. A peggiorare le cose, per aggiungere un nuovo file di origine o di prova, avrei dovuto modificare manualmente la pagina di prova corridore per includere i nuovi file.
Ora testare un progetto serio JavaScript e guardare il vostro carico di lavoro crescere.Si ', si sta testando, ma è doloroso.
Ci devono essere alcuni grandi strumenti per rendere questo più facile, giusto?Naturalmente ci sono - ma, come con qualsiasi altra cosa JavaScript questi giorni, ci sono un milione di 'em. Qui ci sono i miei preferiti e come li utilizzano. Per una trattazione più approfondita,  visitate questa pagina , dove ho scritto una guida utilizzando questi strumenti per testare una pagina singola base app Web in esecuzione Backbone.js.
Iniziare con Karma 
Karma  è oggi la pietra angolare del mio flusso di lavoro di prova. Karma, ex (per ovvie ragioni) Testacular, è un fantastico test runner automatizzato che mantiene miei test in esecuzione e la mia sanità mentale intatta. Gestito da un membro del team Angular.js di Google, Karma offre grande funzionalità out of the box ed è facilmente estendibile.
Ecco quello che sembra per eseguire test: Eseguire  il karma iniziare  dalla directory principale del progetto JavaScript.Tutto qui. Questo comando avvierà automaticamente tutti i browser specificati nel file di configurazione ed eseguire i test. Poi si guarda il file system per le modifiche ed eseguire nuovamente i test in tutti i browser, come si salva.
Il problema è che si deve preparare un file di configurazione per impostare le prove che si desidera. Il file è piuttosto semplice: Eseguire  init karma  e ti guiderà attraverso tutte le basi e generare un file in base alle vostre esigenze. In primo luogo, si deve decidere che cosa framework di test si intende utilizzare.
Karma è di per sé prova-framework agnostico e si basa su plug-in per sapere come trattare con i framework. I plug-in sono disponibili per la maggior parte dei quadri che si desidera utilizzare, tra cui Jasmine, Mocha, e QUnit. Se non stai usando uno di quelli, controllare Npm (il gestore di pacchetti ufficiale per Node.js) per un plug-in Karma prima di arrivare troppo investito. Se non esiste plug-in per il framework di test, è possibile scrivere il proprio plug-in o passare a un quadro meno esoterico.Il prossimo compito è quello di configurare il vostro browser. Karma lancerà automaticamente tutti i browser specificate, tra cui Chrome, Firefox, IE e Opera.Inoltre, è possibile avviare ed eseguire il test in un ambiente senza testa con PhantomJS o SlimerJS. Non abbastanza per te? Con un piccolo extra di configurazione, è possibile ottenere il Karma di agganciare in  BrowserStack  o  salsa di eseguire i test su qualsiasi browser che hanno a disposizione. Tu dici che vuoi testare un browser TV Samsung? Fino a quando un dispositivo è dotato di un browser e l'accesso in rete, locale o altro, è possibile collegare manualmente ed eseguire i test anche lì. Basta navigare l'indirizzo IP del computer host alla porta specificata e farà il resto, compresi eseguire nuovamente i test automaticamente.Dopo aver scelto il vostro browser, dire Karma dove trovare i file. Se l'ordine è importante, è possibile elencare i file uno a uno - anche se io non consiglio la creazione di un progetto in tal modo. Invece, utilizzare uno strumento come RequireJS per gestire le dipendenze per voi. In questo modo, tutto ciò che serve a comprendere è qualcosa di simile  src / ** / *. js  e  prova / ** / * Spec.js  e siete a posto. Aggiungere file e rimuovere i file a vostro piacimento e non toccare mai il file di configurazione. Se avete bisogno di un martello più piccolo  ** / *. js , Karma capisce le espressioni regolari JavaScript, in modo da rispolverare e andare avanti.Per i progetti di base, questo è tutto! Dite Karma di guardare le modifiche il file di sistema per lo sviluppo locale, gestiti  inizio karma , e cominciare i test di scrittura. 
Altri strumenti per il lavoro che ho una manciata di trucchi di configurazione che uso quando il test di applicazioni backbone (in particolare per quanto riguarda i modelli), così come plug-in e strumenti che possono essere utili supplementari. Li troverete  nel pieno procedura dettagliata , ma io ti delineare alcuni qui.Parlando di asserzioni, se si sta scrivendo codice per Node.js o solo il targeting browser moderni, dare un'occhiata seria a should.js . Si tratta di una libreria affermazione che gioca bene con Jasmine e legge chiaramente. L'unico problema è che usa le proprietà di accesso ECMAScript (getter e setter), che alcuni browser - in particolare IE8 e precedenti - non supportano.Mentre Jasmine offre molti sostenitori di test, come simulazioni e spie, ma solo di recente iniziato a sostenere la capacità di richieste XHR falsi. Il nuovo supporto ha una certa maturazione da fare, quindi dovrò restare con il mio ex alleato,  sinon.js , per sostituire il server. Sinon.js raddoppia un sacco di funzionalità di Jasmine, ma ha avuto la capacità desiderata per simulare un server da qualche tempo. E 'anche facile da configurare e utilizzare.Tutti i test che faccio è quello di garantire il mio codice è coperto. Io uso il plug-in Karma per il  istanbul  strumento di copertura di codice. Costruita sulle spalle di esprima  e  escodegen  istanbul  funziona bene con il Karma. Di per sé, genera report in HTML e lcov, ma il plug-in Karma aggiunge il supporto per l'output di testo e XML Cobertura, in modo Jenkins può capire. Sì, Karma ha plug-in per strumenti di integrazione continui, troppo.Insieme, questi strumenti mi hanno risparmiato un sacco di tempo e mal di testa. Se siete interessati a unit test del JavaScript o aggiornare il proprio flusso di lavoro di test corrente, trascorrere un giorno o due a giocare con loro per vedere se hanno ragione anche per te. Se incorrere in problemi o hai altre domande o suggerimenti, non esitate a commentare qui o raggiungere via Twitter ( @ freethejazz ).

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.