Cobertura de código en 2 minutos con NYC

¿No tenía una imagen clara de cuánto de mi código tenía pruebas? NYC llegó para ayudarme a conocer el estado real de mis tests.
NYC es un paquete de npm para obtener estadísticas sobre la cobertura de pruebas trabajando de la mano con Mocha, y su configuración es sumamente fácil. En este ejemplo, instalamos NYC para leer los resultados de Mocha y ver el porcentaje cubierto.
Estoy usando el mismo proyecto de pruebas por si quieres revisar los cambios en el repositorio de GitHub o continuar leyendo.
Instalar NYC
Instalamos el paquete NYC usando npm. Nos ayudará a obtener el reporte de cobertura de nuestras pruebas con Mocha.
npm install NYC --save-devEjecutar la cobertura
Con NYC listo, ejecutamos el comando para ver el reporte.
NYC npm run testNYC generará una tabla con estadísticas sobre el código, las funciones y las pruebas cubiertas por nuestros tests.
Podemos ver las ramas (branches), líneas, funciones con y sin tests, archivos y los porcentajes cubiertos. Si revisas la prueba ads.spec.js, solo contiene el primer caso del switch, y el reporte nos avisa que las líneas 11, 18 y 25 no están cubiertas. Si quiero llegar al 100% de cobertura, voy a completar mis casos pendientes.
Completar los casos
Editamos el archivo ads.spec.js para incluir los casos pendientes y el caso por defecto.
const assert = require('assert');
const { getIVABanner } = require('../src/ads');describe('Ads for taxes', () => {
it('Get green banner for 15% IVA', () => {
const actual = getIVABanner(15);
const expect = {
img: '/bar.jpg',
size: '15%',
border: 3,
color: 'green'
}
assert.deepEqual(actual, expect)
}) it('Get green banner for 20% IVA', () => {
const actual = getIVABanner(20);
const expect = {
img: '/bar.jpg',
size: '20%',
border: 5,
color: 'yellow'
}
assert.deepEqual(actual, expect)
})
it('Get green banner for 30% IVA', () => {
const actual = getIVABanner(30);
const expect = {
img: '/bar.jpg',
size: '30%',
border: 5,
color: 'red'
}
assert.deepEqual(actual, expect)
})
it('Get default ', () => {
const actual = getIVABanner();
const expect = {
img: '/bar.jpg',
size: '100%',
border: 5,
color: 'red'
}
assert.deepEqual(actual, expect)
})
})Volver a ejecutar las pruebas
Ejecutamos nuevamente NYC desde la terminal y el reporte muestra el 100% de nuestro código cubierto.
NYC npm run test ¡Eso es todo!
Espero que esto te sirva como un buen punto de partida para medir la cobertura de código con Mocha y NYC. Si te gustó, por favor compártelo. ¡Gracias por leer!
Photo by Clay Banks on Unsplash
Compartir este artículo
Si esta guía te resultó útil, compártela con tu equipo o con otros desarrolladores.
Software real. Lecciones reales.
Comparto las lecciones que aprendí por las malas, para que puedas evitarlas o estar preparado cuando ocurran.
Únete a 13,800+ desarrolladores y lectores.
Cero spam. Cancela tu suscripción en cualquier momento.