19 puntos por xguru 2024-06-03 | 7 comentarios | Compartir por WhatsApp

Runner de pruebas de Node.js

  • Node.js ahora incluye un runner de pruebas integrado
  • Puedes escribir pruebas importando el módulo node:test en los archivos de prueba
  • Ejecutar una sola prueba: node --test tests/math.test.js
  • Detecta y ejecuta automáticamente los archivos de prueba
  • Puedes verificar las pruebas usando el módulo assert integrado
  • Puedes agrupar y administrar pruebas relacionadas usando suites de prueba y hooks

Mocking nativo de Node.js

  • Node.js ahora incluye funciones de mocking nativas
  • Puedes usar directamente en Node.js capacidades de mocking que suelen ofrecer otros frameworks de prueba
  • Puedes implementar mocking usando el método mock del módulo node:test

Cobertura de pruebas nativa de Node.js

  • La cobertura de pruebas ayuda a entender qué tanto del código fuente está cubierto por pruebas
  • Desde Node.js 20, se ofrece cobertura de pruebas nativa
  • Puedes generar datos de cobertura de pruebas usando la bandera --experimental-coverage
  • Los reportes de cobertura permiten identificar áreas de código que no han sido probadas

Modo watch de Node.js

  • El modo watch detecta cambios en archivos en tiempo real y vuelve a ejecutar scripts automáticamente
  • No se necesitan dependencias externas como Nodemon
  • Puedes detectar cambios en archivos y ejecutar scripts automáticamente usando la bandera --watch

Corepack de Node.js

  • Corepack actúa como puente entre el proyecto y el gestor de paquetes
  • Puedes especificar el gestor de paquetes que usará el proyecto y Corepack lo administra automáticamente
  • Puedes activar Corepack con el comando corepack enable

Cargador .env de Node.js

  • Desde Node.js 20, se ofrece de forma nativa la carga de variables de entorno desde archivos .env
  • Puedes cargar un archivo .env usando la bandera --env-file
  • Puedes cargar varios archivos .env para configurar distintos entornos

Soporte de import.meta en Node.js

  • Node.js v20.11.0 y v21.2.0 agregan soporte para import.meta.filename y import.meta.dirname
  • Permite obtener con mayor facilidad la ruta del archivo y el nombre del directorio

Promesas nativas para temporizadores en Node.js

  • Desde Node.js v15, se pueden usar temporizadores en forma de promesa
  • Puedes usar setTimeout y setInterval como promesas para escribir código asíncrono de forma más concisa

Módulo de permisos de Node.js

  • Es una función experimental para controlar el acceso a recursos de las aplicaciones Node.js
  • Puedes restringir el acceso al sistema de archivos, la red, variables de entorno y más usando la bandera --experimental-permission

Módulo de políticas de Node.js

  • Es una función de seguridad para evitar la carga de código malicioso
  • Puedes especificar un archivo de políticas y controlar la carga de módulos usando la bandera --experimental-policy

7 comentarios

 
cometkim 2024-06-05

No se menciona node --run. Desde las versiones más recientes, es posible ejecutar scripts sin depender de NPM. El arranque es decenas de veces más rápido.

 
tsboard 2024-06-03

Esta vez, mientras trabajaba en el proyecto tsboard, hice bastantes comparaciones con el runtime de Bun por aquí y por allá. Node.js realmente tiene muchísimas cosas buenas, pero todavía se echan de menos estas dos: (1) no es compatible con TypeScript y (2) la velocidad. Creo que también es realmente impresionante en aspectos como la compatibilidad y el hecho de que prácticamente no depende del hardware ni de los recursos disponibles.

Si están considerando TypeScript, la velocidad de ejecución y demás, prueben considerar también el runtime de Bun...!

 
[Este comentario fue ocultado.]
 
edunga1 2024-06-03

Vaya~ hasta mencionan a Jest en el artículo original.

 
edunga1 2024-06-05

Probé migrar un proyecto pequeño de jest -> node.js, pero como el soporte para funciones de validación es muy limitado, no convence mucho :(

 
kandk 2024-06-03

De verdad adoptan las últimas tendencias rapidísimo..

 
dylanju 2024-06-03

¡Y mocking nativo!