¡Hola a todos! Gracias por venir a mi charla. Hoy voy a hablar sobre las pruebas sin dependencias con Node.js, lo que significa que puedes comenzar a escribir tus pruebas unitarias, pruebas de integración, sin tener que instalar nada desde NPM.
Antes de adentrarnos en la naturaleza del nuevo ejecutor de pruebas de Node, quería hablar un poco sobre por qué se deseaba un ejecutor de pruebas en primer lugar. Casi todos los proyectos necesitan un ejecutor de pruebas. Ya sea que estés construyendo una aplicación o un módulo que planeas publicar en NPM o cualquier otra cosa, si planeas que otras personas usen tu código, casi seguramente necesitas pruebas para ello. Y luego, Node.js ha incluido desde hace años una biblioteca de aserciones realmente buena que se importa simplemente como assert. Esta es la biblioteca de aserciones que he estado usando durante años. Me gusta, así que eso es una dependencia menos. Y luego, la mayoría de los ejecutores de pruebas se superponen mucho en términos de funcionalidad de todos modos. Así que, ya sabes, cada ejecutor de pruebas ejecuta algunas pruebas. Por lo general, tienen características como tiempos de espera, informes sobre qué pruebas pasaron y fallaron, saltar pruebas, cosas así. Así que, hay diferencias, algunos ejecutores de pruebas son más adecuados para el desarrollo front-end, algunos hacen cosas como inyectar variables globales en tu código sin que lo sepas, algunos ejecutan sus pruebas dentro de diferentes contextos, por lo que podrías tener resultados sorprendentes cuando verifiques la igualdad y cosas así. Pero, ya sabes, hay estas pequeñas imperfecciones, pero en general, muchos ejecutores de pruebas tienen muchas funcionalidades superpuestas.
Y además, NPM es realmente un lugar peligroso. A lo largo de los años, ha habido varios incidentes, como left pad, la cosa de colors JS, incluso más recientemente, el paquete minimist, que creo que tiene como 50 millones de descargas o algo así, no le pasó nada en NPM, pero el repositorio de GitHub desapareció. Así que, todas estas dependencias de terceros que estás asumiendo conllevan ciertos riesgos y costos. Y eso es solo una razón por la cual tener un ejecutor de pruebas incorporado, creo, es útil. Y también, hay una tendencia general a tener más de estas cosas incluidas en los entornos de ejecución. Así que, ya sabes, ahora Node tiene un ejecutor de pruebas incorporado. Estoy bastante seguro de que Bun tiene uno, sé que Deno tiene uno. Esto se está volviendo cada vez más común. Y luego, aquí está mi tweet de hace más de un año, creo que Node debería incluir un ejecutor de pruebas y, ya sabes, me siento bastante seguro al respecto. Algunas de las características del nuevo ejecutor de pruebas, puedes ejecutarlo a través de la interfaz de línea de comandos (CLI) que ahora tiene Node con la bandera --test. O puedes ejecutar un archivo independiente que contenga pruebas. Así que, digamos que tienes tu archivo foo.js, puedes decir Node foo.js y si estás usando el ejecutor de pruebas allí, seguirá funcionando. En cuanto a escribir las pruebas en sí, admitimos código síncrono, código basado en promesas o async/await. E incluso, ya sabes, porque Node todavía tiene muchas API basadas en devoluciones de llamada, también admitimos pruebas basadas en devoluciones de llamada. Si vienes de un ejecutor de pruebas como tap o tape, entonces admitimos pruebas de estilo tap, utilizando la función test. Si vienes de un ejecutor de pruebas como Mocha o Jest, tenemos las funciones describe e IT. Bajo el capó, todo utiliza test, describe e IT se implementan de manera similar.
Comments