Así que lo usamos mucho. Y la cobertura de código es el siguiente paso para las compatibilidades de las que quiero hablarte. El test runner de Node.js tiene soporte nativo. Simplemente pasas la bandera, que es experimental test coverage. Va a utilizar la función de cobertura incorporada de V8 para darte una salida como esta. Te dará el comando que vamos a ejecutar y estas serán las pruebas que se van a ejecutar. Luego tenemos la salida TAP habitual que tenemos en el lateral, y luego tenemos el inicio del informe de cobertura. Como puedes ver, en el resultado de la cobertura, hay dos líneas que no fueron cubiertas, que son las que lanzamos aquí en nuestra función. Así que funciona como se esperaba, ¿verdad? También puedes cambiar los reporteros de cobertura. Puedes usar diferentes reporteros y/o generar informes directamente en archivos, utilizando el test reporter o el test reporter destination. Actualmente, el test runner nativo admite estos reporteros. Puedes usar los reporteros spec.tap, lcol y JUnit también, de forma nativa, solo tienes que ponerlos en el test reporter, igual y el nombre del reportero.
Pero ahora hablemos de TypeScript, que es lo que más me gusta. Un poco de información adicional aquí, pero no sé si sabes todo esto, pero Node ya te permite compilar TypeScript sobre la marcha utilizando importers, ¿verdad? Anteriormente, los importers se llamaban loaders, y son funciones que se ejecutan antes de que se cargue un módulo y también se pueden utilizar para transformar un módulo antes de importarlo. Babel tiene loaders, Jest tiene loaders, muchas otras herramientas que utilizamos tienen loaders porque puedes importar el módulo y luego va a cambiar el archivo en el que estás y luego va a ejecutar el archivo en el que estás, ¿verdad? Esto significa que también puedes ejecutar TypeScript porque simplemente puedes importar un archivo TypeScript y luego convertirlo a JavaScript, ¿verdad? Y los importers comunes que tenemos hoy en día son ts-node, ts-sex y ts-build. También puedes crear el tuyo propio si quieres, si no quieres utilizar ninguna biblioteca externa. Me gusta ts-sex, creo que es uno de los mejores que hay. Y para el soporte de TypeScript, solo he cambiado el archivo que teníamos antes. Solo he añadido algunos tipos y luego podemos ejecutarlo con import ts-sex y básicamente el archivo ts index.ts, y luego boom, magia, ¿verdad? Pero, ¿qué pasa si te dijera que en realidad puedes usar esto para ejecutar el test runner? Así que el soporte de TypeScript, solo tomamos nuestra extensión de archivo anterior y le añadimos --test. Así que boom, se ejecuta, nada más, como magia. Eso es todo, todo se ejecuta, no hay configuración, nada, solo ejecutamos con cosas nativas, ¿verdad? Y cuando ves esto, como ese archivo de configuración de jazz de 50 líneas que has estado manteniendo durante los últimos cinco años, verás que esto es bastante agradable porque ya no tienes que mantener TypeScript, así que es súper, súper agradable. Y hay otras características compatibles para el test runner de Node, por lo que en realidad puedes abortar pruebas a través de señales de aborto. Puedes saltarte la prueba, como dije, con it skip o it to do para una prueba que aún está por hacer. Puedes marcar una prueba específica que quieres ejecutar, así que con it only, es divertido, súper agradable. Y también tenemos ganchos del ciclo de vida como lo hace Jest con before, after, before each, after each y cosas así. Y también puedes filtrar el patrón de nombre a través de rejects. Ahora puedes hacerlo, creo que Node 21 ha añadido el soporte para globs, así que ahora puedes añadir globs en los nombres de archivo y tienes un modo de observación, que es experimental. Pero el futuro de las pruebas en Node.js, y curiosamente, Colin mismo tiene una lista de lo que quiere para el test runner de Node.js. Lo primero que quería mostrarte es la simulación de módulos. Básicamente, la simulación de módulos también se está implementando en el test runner.
Comments