testing in javascript
TRANSCRIPT
Backend più leggeri (API Java / Python / Ruby + FE in JS)
Lascio la logica di business nel backend e il front si occupa solo del front
Backend in js
Flash is dead
Perché?
Perché scrivere test?
Refactor
modifica una riga di codice e so subito se tutto continua a funzionare
Test unitari
Per unità si intende normalmente il minimo componente di un programma dotato di funzionamento autonomo
Classi / Metodi (OOP)Funzioni (Procedurale)
Esempi
Test unitario:[2, 3, 6, 10].indexOf(3) è uguale a 1?
Test funzionale:Metto nome utente e password nella form, con un nome non valido, e controllo che un errore appaia sotto la form.
Installazione ed uso
$ npm install mocha$ npm install chai$ npm install sinon
sia per frontend che per backend (node.js)
Installazione ed uso
Ruby On Rails: Konacha
gem 'konacha' gem 'konacha-chai-matchers'
ambiente compatibile con l’assets pipeline
mocha
“Mocha allows you to use any assertion library you want, if it throws an error, it will work!”
http://visionmedia.github.io/mocha/
Sinon.js
SpyUna spy è una funzione che registra argomenti, valori di ritorno, eccezioni di un’altra funzione. Può essere anonima oppure decorare una funzione esistente.
StubUno stub è una funzione spia con un comportamento preprogrammato
Svantaggi
- Curva di apprendimento in salita- Legacy code difficile da testare- Costo (sopratutto iniziale)
Argomenti interessanti non trattati:
Continuous integration
Test Driven Development
Alternative (Jasmine / QUnit / Karma)
http://visionmedia.github.io/mocha/http://chaijs.com/http://sinonjs.org/