Il mondo JavaScript offre un sacco di opzioni per … beh, praticamente tutto. Oggi ci concentreremo sugli strumenti di test, rispondendo alla domanda “Qual è il miglior framework JavaScript?”
Vi guideremo attraverso cinque dei più popolari framework di test JavaScript e, alla fine dell’articolo, eleggeremo quello che pensiamo sia il migliore. Cominciamo.
- Che cosa sono i framework di testing?
- Cinque quadri di test JavaScript che vale la pena controllare
- Mocha
- Puppeteer
- Jasmine
- QUnit
- Jest
- Notable Absences
- Verdict: Qual è il miglior framework di test per JavaScript?
- Valutazione dei framework
- Costo
- Installazione
- Facilità di configurazione
- Curva di apprendimento
- Ecco il vincitore
Che cosa sono i framework di testing?
Prima di tuffarci nella nostra lista di framework, è importante capire cos’è un framework di testing.
In parole povere, un framework di testing è uno strumento – o un insieme di strumenti – che ti aiuta ad eseguire i test unitari. Un framework di test dovrebbe fornirvi almeno
- Regole o convenzioni per scrivere casi di test e organizzarli in suite di test.
- Mezzi per eseguire automaticamente e autoclassificare i test.
- Risultati dei test che vengono visualizzati e formattati.
Cinque quadri di test JavaScript che vale la pena controllare
A questo punto dovreste avere una buona conoscenza di cosa sono i quadri di test e perché ne abbiamo bisogno. Con questo fuori dai piedi, è il momento di affrontare la nostra lista di strumenti, iniziando con Mocha.
Mocha
Mocha, talvolta chiamato anche MochaJS, è un framework di test che funziona sia in Node.js che nel browser. È stato rilasciato nel 2011 e da allora è stato uno dei framework di test più popolari per il mondo JavaScript. Tuttavia, secondo il rapporto State of JavaScript, la popolarità di Mocha è stata in declino negli ultimi anni, anche se è ancora probabilmente il più usato e conosciuto degli strumenti.
Questo framework rende semplice il test asincrono eseguendo i test in serie. Questo permette una segnalazione accurata e, allo stesso tempo, la mappatura delle eccezioni non catturate ai casi di test corretti. Il framework Mocha ha una configurazione estremamente flessibile. Vi permette di accoppiarlo con le librerie di cui avete particolarmente bisogno per funzionalità come le asserzioni, il mocking, e così via.
Lo svantaggio di tale flessibilità è che Mocha richiede più lavoro per la sua configurazione iniziale. Inoltre, mentre altri framework sono già dotati di asserzioni e funzionalità mock, Mocha richiede strumenti aggiuntivi per questo.
Sito ufficiale: mochajs.org
Repository: github.com/mochajs/mocha
Puppeteer
Puppeteer è una libreria Node.js che permette agli utenti di controllare un browser Chrome o Chromium senza testa. In questo modo è possibile automatizzare i test che in genere si eseguono manualmente utilizzando un normale browser. La pagina del progetto elenca alcuni esempi di test che è possibile eseguire:
- Generare screenshot e PDF di pagine.
- Crawl di una SPA (applicazione a pagina singola) e generare contenuti pre-renderizzati (cioè, “SSR” ).
- Automatizzare l’invio di moduli, test UI, input da tastiera, ecc.
- Creare un ambiente di test aggiornato e automatico. Esegui i tuoi test direttamente nell’ultima versione di Chrome usando le ultime caratteristiche di JavaScript e del browser.
- Raccogli una traccia temporale del tuo sito per aiutare a diagnosticare i problemi di performance.
- Testa le estensioni di Chrome.
- Testim ha rilasciato un registratore gratuito per Puppeteer. Controllalo e usalo tutte le volte che vuoi.
Sito ufficiale: developers.google.com/web/tools/puppeteer
Repository: github.com/puppeteer/puppeteer
Jasmine
Jasmine è un framework di test BDD (behavior-driven development) in JavaScript.
Questo framework ha già praticamente tutto il necessario per iniziare i test. Ha asserzioni integrate e test doppi con spie, a differenza, per esempio, di Mocha, che richiede l’installazione di strumenti di terze parti per queste funzionalità.
Tuttavia, Jasmine è anche flessibile e può integrarsi perfettamente con un gran numero di strumenti di test aggiuntivi. Puoi facilmente usare Karma come test runner o impiegare Sinon.JS per le tue necessità di mocking.
Sito ufficiale: jasmine.github.io/
Repository: github.com/jasmine/jasmine
QUnit
QUnit faceva originariamente parte della libreria di programmazione jQuery. John Resig lo ha creato per testare jQuery, jQuery UI e jQuery Mobile. Nel 2008, QUnit è stato estratto dalla codebase di jQuery e rilasciato come framework indipendente, ma richiedeva ancora jQuery per funzionare. Nel 2009, hanno risolto il problema con una riscrittura, rendendo QUnit finalmente indipendente da jQuery.
Anche se originariamente mirava a jQuery, QUnit è attualmente un framework generico che può testare qualsiasi codice JavaScript, supportando sia gli ambienti client che server-side.
Si potrebbe pensare a QUnit come al rappresentante JavaScript nella famiglia xUnit dei framework di test delle unità. Ha una configurazione facile e veloce. Inoltre, dato che esiste da almeno 12 anni, è uno strumento ben supportato.
Sito ufficiale: qunitjs.com
Repository: github.com/qunitjs/qunit
Jest
Jest è un framework di test per JavaScript che si concentra sulla semplicità. Rilasciato da Facebook, Jest mira a lavorare fuori dalla scatola e senza bisogno di configurazione.
Se date un’occhiata alla pagina “getting started” di Jest, vedrete che potete installarlo, scrivere il vostro primo test ed eseguirlo nel giro di pochi minuti, senza complicate configurazioni o installazioni aggiuntive. Un altro vantaggio di Jest è la sua impressionante performance.
Jest è usato principalmente per testare applicazioni React, ma questo non significa che sei limitato ad usarlo per testare solo le applicazioni scritte con il framework. Al contrario: puoi usarlo per testare anche applicazioni Node, Angular e Vue, solo per nominarne alcune.
Sito ufficiale: jestjs.io/
Repository: github.com/facebook/jest
Notable Absences
Ti starai chiedendo perché alcuni famosi strumenti di test JavaScript non sono entrati nella nostra lista. Forse pensate che strumenti come Karma, Sinon e Chai, tra gli altri, sono abbastanza popolari per essere nella lista. Perché non li abbiamo inclusi?
In parole povere, volevamo mantenere la lista il più concisa possibile. Per farlo, abbiamo deciso di non includere nella lista strumenti di test che non sono framework, in senso stretto. Quindi, questa è la ragione per cui uno strumento super popolare come Karma non ce l’ha fatta: è un test runner, non un framework. Lo stesso ragionamento si applica a Sinon (uno strumento di mocking) e Chai (una libreria di asserzioni).
Si potrebbe obiettare che Puppeteer non è proprio adatto alla lista e, in una certa misura, sono d’accordo. Cioè, tutti gli altri strumenti sono framework più adatti a eseguire test in stile unit testing, mentre Puppeteer è più uno strumento di automazione del browser. È ancora un framework di test, però, nel senso che permette di progettare test automatizzati che vengono poi eseguiti senza intervento umano.
Verdict: Qual è il miglior framework di test per JavaScript?
Abbiamo presentato cinque framework di test per JavaScript. Ora è il momento di mantenere la promessa del titolo del post e selezionare il migliore. Per farlo, giudicheremo i framework secondo quattro criteri: costo, installazione, facilità di configurazione e curva di apprendimento.
Valutazione dei framework
Costo
Il primo criterio è certamente il più facile da valutare. Tutti i framework che abbiamo trattato qui sono progetti open-source, quindi è possibile scaricarli e usarli gratuitamente (come la birra). Quindi, non abbiamo un chiaro vincitore qui. Andiamo avanti.
Installazione
L’installazione di tutti gli strumenti di cui sopra è abbastanza facile. Dopo tutto, potete installarli tutti usando npm (o, in alternativa, Yarn). Tuttavia, alcuni degli strumenti offrono opzioni di installazione aggiuntive.
Per esempio, oltre a npm e Yarn, potete installare QUnit come download autonomo. Ma questo richiederebbe di memorizzare e gestire questa risorsa. Invece, si può usare la versione ospitata sul CDN di jQuery. Jasmine offre anche una versione standalone che non dipende da Node e ti permette di eseguire le specifiche usando il tuo browser.
Allora, abbiamo un vincitore qui? Noi pensiamo di sì. Se dovessimo scegliere solo in base alla facilità di installazione, avremmo un altro pareggio. Ma, come abbiamo visto, QUnit e Jasmine offrono entrambi più opzioni, dato che si possono usare come librerie indipendenti. Questa flessibilità aggiuntiva è utile? Il vostro chilometraggio può variare su questo, ma per noi, QUnit e Jasmine sono i vincitori qui.
Vincitori: QUnit e Jasmine
Facilità di configurazione
Ora guardiamo la facilità di configurazione. Quando si tratta della configurazione iniziale, abbiamo un chiaro vincitore: Jest. Il framework promette l’uso di zero-config e mantiene questa promessa. Certo, permette di fare configurazioni opzionali, ma è incredibile installare un framework di test e avere un vero test in esecuzione in circa due minuti, senza alcuna configurazione o installazione di ulteriori strumenti.
Vincitore: Jest
Curva di apprendimento
Infine, la curva di apprendimento. Anche qui dobbiamo scegliere Jest. Poiché è dotato di un’ampia API e non richiede tanti strumenti di terze parti come gli altri framework, Jest presenta inevitabilmente una curva di apprendimento meno ripida.
Vincitore: Jest
Ecco il vincitore
Dopo aver esaminato cinque framework di test JavaScript, e averli analizzati utilizzando quattro criteri, è il momento di scegliere un vincitore.
Quindi, poiché è stato il vincitore in due dei quattro criteri che abbiamo usato, sceglieremo Jest come vincitore. Questo non significa che non dovreste provare gli altri strumenti. Al contrario: sperimentate e fate pratica il più possibile, perché questo è il modo migliore per imparare.