Link copiato negli appunti
Con l'utilizzo sempre più ampio di JavaScript nella realizzazione di Web applications diventa importante disporre di strumenti per la produzione di test unitari grazie ai quali effettuare procedure per la verifica di metodi e funzioni e per l'individuazione di eventuali bug; anche in questo settore non mancano le soluzioni libere e gratuite, questo post si propone di selezionarne una cinquina ai fini della valutazione.
- Buster.JS: aggiornato con frequenza ma ancora in beta, si propone come un testing toolkit utilizzabile sia genericamente per JavaScript che nello specifico per Node.js, i test case prodotti potranno quindi essere eseguiti sia su browser che attraverso il noto ambiente basato su V8;
- JsTestDriver: si presenta come una remote javascript console, si integra come estensione in Eclipse e IntelliJ, fornisce il supporto per alcuni dei più diffusi framework JS, supporto i client multipli e l'esecuzione di istruzioni da linea di comando tramite jar;
- Jasmine: è un framework per lo sviluppo behavior-driven che potrà essere utilizzato al fine di testare i sorgenti JavaScript, ha il vantaggio di essere indipentente da qualsiasi altra libreria e di non necessitare del DOM; presenta una ricca raccolta di matchers predefiniti e permette la generazione di Matchers personalizzati;
- Vows: un'ulteriore soluzione behavior driven realizzata per effettuare test asincroni, il framework è stato pensato per gli sviluppatori che utilizzano diffusamente Node.js; sfrutta delle test suite eseguibili ed esportabili il cui risultato viene riportato in console tramite reporters dedicati;
- Sinon.JS: funziona con qualsiasi testing framework e non richiede dipendenze, è compatibile con la maggior parte dei browser più utilizzati (anche in versioni particolarmente datate) e supporta Node.js e il testing per Android nonché Backbone.js.
Le risorse proposte non sono naturalmente le uniche rilasciate sotto licenza Open Source per le operazioni di Unit Testing, ma tra i criteri di scelta per quelle elencate ha avuto un ruolo sostanziale la disponibilità di aggiornamenti recenti dei vari progetti.