Cobertura de código en JavaScript con Blanket.js

Hacía tiempo que andaba buscando una manera de calcular la cobertura de código en JavaScript. Con el amigo Andoni habíamos visto algunas soluciones que no veíamos claras y parecía que al final tendríamos que acabar tirando de jsTestDriver que tiene una herramienta para calcular la cobertura de código. Lo malo de esto es que no nos valía la infraestructura que ahora tenemos montada para pasar los tests y esto nos complicaba un poco la vida.

Pero el otro día llegaba a mi timeline un tweet del amigo Juanjo Coello como este:

Y la verdad es que la librería funciona muy bien. Aquí van los pasos que tenéis que seguir si la queréis utilizar junto con Jasmine.

1.- Bajarse la librería. La podéis descargar aquí: http://migrii.github.com/blanket/
2.- Bajarse el adapter de Blanket para Jasmine de aquí: https://raw.github.com/Migrii/blanket/master/src/adapters/jasmine-blanket.js
3.- En el runner de Jasmine (típicamente SpecRunner.html) incluir el script de blanket y el adapter de Jasmine de la siguiente manera:

<script type=»text/javascript» src=»../libs/blanket/blanket.min.js» data-cover-adapter=»../libs/blanket/jasmine-blanket.js» ></script>

Para incluir los archivos a los que queremos pasar la cobertura de código tenemos dos opciones. La primera es utilizar esta misma línea que acabamos de escribir. Utilizando el atributo data-cover-only podemos indicar los archivos a los que queremos pasar la cobertura, ya sea con una expresión regular, con un string con «comodines» o con un array de nombres de archivo. Un posible ejemplo sería el siguiente:

<script src=»blanket.min.js» data-cover-adapter=»jasmine-blanket.js» data-cover-only=»[‘source1.js’,’src/source2.js’]»></script>

Y ya está, ya lo tenemos todo configurado. Ahora solo falta pasar los tests y al final del archivo se nos adjuntará la información sobre la cobertura.

Saludos!