testing in javascript

44
Introduzione al Testing in Javascript by Piero Bozzolo (@petecocoon)

Upload: piero-bozzolo

Post on 06-Aug-2015

319 views

Category:

Documents


1 download

TRANSCRIPT

Introduzione al Testing in Javascript

by Piero Bozzolo (@petecocoon)

@petecocoon

Software Craftsman etalia.net

Di cosa parleremo?

Perché scrivere test

Test unitari

Assert / Should / Expect

Javascript: l’altro ieri

Javascript: ieri

Javascript: oggi

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é?

Come si collauda un sito in JS?

CTRL + R

Come si collauda un sito in JS?

CTRL + R (199x-20xx)Riposa in Pace sarai sempre nei nostri cuori

Perché scrivere test?

Meno bachi nelle

nuove features

Perché scrivere test?

Meno bachi nelle

vecchie features

Perché scrivere test?

Refactor

modifica una riga di codice e so subito se tutto continua a funzionare

Perché scrivere test?

i test sono

Documentazione

Perché scrivere test?

migliorano

il Design

Perché scrivere test?

migliorano

il Design

è difficile testare codice organizzato o scritto male

Test unitari

Per unità si intende normalmente il minimo componente di un programma dotato di funzionamento autonomo

Classi / Metodi (OOP)Funzioni (Procedurale)

Cosa testare?

Risultato di una funzione

Proprietà e metodi di un oggetto

Test funzionali

Controllano che una determinata feature funziona correttamente.

Alto livello

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.

Test unitari

Come?

Assert

Demo

chai.js* assert style

*http://chaijs.com/api/assert

chai.js* assert style

*http://chaijs.com/api/assert

Chai.js supporta altri due stili

Should

chai.js should style

Expect

chai.js expect style

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

chai

chai + mocha

mocha + chai output

mocha + chai output

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)