Jest 16.0: CLI Turboalimentado y Actualización Comunitaria
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Ha pasado un mes desde el último lanzamiento importante y hemos realizado mejoras significativas en Jest. En esta versión mayor actualizamos el formato de snapshot que utilizamos, lo que probablemente requerirá actualizar los snapshots al actualizar Jest. No tomamos estas decisiones a la ligera y no esperamos que esto ocurra con frecuencia, pero consideramos necesario mejorar el formato periódicamente.
CLI Mejorado

Jest 16 incluye una nueva interfaz de reportería que muestra pruebas en ejecución, un resumen en vivo y una barra de progreso basada en el tiempo estimado de pruebas de ejecuciones anteriores. También mejoramos la salida de CLI para funcionar mejor con diferentes esquemas de colores. Si hubo fallos en pruebas anteriores, Jest ahora siempre ejecutará esas pruebas primero para brindar información útil a los usuarios lo más rápido posible.
También añadimos muchas características nuevas que pueden ser útiles:
-
Nuevos flags de CLI: Se añadió la opción
--testNamePattern=patterno-t <pattern>para filtrar pruebas desde la línea de comandos, similar ait.onlyofiten las pruebas. -
Las pruebas que fallaron previamente ahora siempre se ejecutan primero.
-
jest <pattern>ahora es insensible a mayúsculas/minúsculas para facilitar el filtrado de archivos de prueba. -
Ahora se puede interrumpir una ejecución en modo watch. Durante una prueba, simplemente presione cualquiera de las teclas usadas en modo watch (
a,o,p,qoenter) para abortar la ejecución y comenzar una nueva. -
El flag
--bailahora también funciona en modo watch. Junto con la ejecución prioritaria de pruebas fallidas, ¡el modo watch de Jest ahora se sentirá turboalimentado! -
Jest ahora considera automáticamente archivos y pruebas con extensión
jsx. -
Jest advierte sobre archivos de mocks manuales duplicados y mejoramos los mocks automáticos para módulos ES compilados con Babel.
-
Se añadió la función
jest.clearAllMockspara limpiar todos los mocks entre pruebas. -
Mejoramos la resolución de módulos cuando se usa
moduleNameMapper. -
Finalmente, se añadió la opción CLI
--findRelatedTests <fileA> <fileB>para ejecutar pruebas relacionadas con archivos específicos. Esto es especialmente útil como hook pre-commit para ejecutar pruebas solo en archivos específicos que tienen pruebas asociadas.
Así se ve Jest al interrumpir una ejecución en modo watch: 
Actualizaciones de Snapshots
La implementación de snapshots en Jest fue completamente reescrita. La nueva versión del paquete jest-snapshot está estructurada para facilitar su integración con otros runners de pruebas y permite integraciones interesantes como con React Storybook. Jest ya no marca snapshots como obsoletos en archivos con pruebas omitidas o fallidas. También realizamos cambios en el formato:
-
Objetos y arrays ahora incluyen coma final para minimizar futuros cambios en snapshots.
-
Eliminamos nombres de funciones en snapshots. Causaban problemas con versiones de Node, instrumentación de cobertura de código y consideramos que mostrar cambios en nombres de funciones no aporta valor útil.
-
Los snapshots ahora se ordenan usando orden natural dentro de un archivo.
Al actualizar a Jest 16, el diff podría verse así: 
Actualizaciones de Librerías de Pruebas
Hemos completado la migración de las aserciones de Jasmine a los nuevos comparadores de Jest. Añadimos tres nuevos comparadores: toBeInstanceOf, toContainEqual y toThrowErrorMatchingSnapshot. Mejoramos los mensajes de error para los comparadores de espías/mocks: toHaveBeenLastCalledWith, toHaveBeenCalledWith, lastCalledWith y toBeCalledWith. Ahora que hemos reescrito todas las aserciones y las separamos en su propio paquete, trabajaremos para hacerlas independientes, permitiendo su integración en cualquier marco de pruebas si deseas usarlas fuera de Jest.
También añadimos varios alias solicitados por la comunidad. Para enfocar Jest en una única prueba, ahora puedes usar it.only o test.only además de fit; para omitir una prueba, it.skip o test.skip están disponibles junto con xit; finalmente, para definir una prueba como concurrente puedes usar test.concurrent, útil cuando tu prueba accede a recursos de red o bases de datos.
Finalmente, si deseas sobrescribir el global expect con otra biblioteca de aserciones como chai, ahora puedes hacerlo mediante la opción de configuración setupTestFrameworkScriptFile.
Actualización de la comunidad
Durante el último mes se escribieron muchos artículos sobre la función de pruebas de instantáneas de Jest, cómo migrar a Jest y cómo comenzar a escribir pruebas. También hice varios videos en vivo para explicar cómo funcionan Jest y las pruebas de instantáneas:
Varias personas escribieron artículos sobre pruebas de instantáneas. El artículo más opinado que resonó con el equipo de Jest fue "Testing with Jest Snapshots: First Impressions". Ben hace tres puntos excelentes:
-
Las pruebas de instantáneas complementan las pruebas convencionales, no las reemplazan.
-
Las pruebas de instantáneas son más útiles con un proceso sólido de revisión de código.
-
Las pruebas de instantáneas funcionan bien con el auto-mocking.
Recomendamos leer el artículo completo. Ben hizo un trabajo fantástico explicando las razones detrás de las pruebas de instantáneas. Es importante señalar que no las creamos para reemplazar otras formas de pruebas, sino para permitir escribir pruebas para código que normalmente no se probaría. Funcionan bien para componentes de React, salidas CLI, mensajes de error y otros casos, pero no resuelven todos los problemas. El objetivo de Jest es ofrecer múltiples formas de escribir pruebas efectivas sin sacrificar rendimiento o mantenibilidad.
Otros destacados sobre pruebas de instantáneas:
-
Serie sobre pruebas en React Native: Parte 1: Jest – Las instantáneas entran en juego y Parte 2: Jest – Instantáneas Redux para acciones y reductores.
-
Cómo adoptamos pruebas de instantáneas de Jest para JavaScript.
-
Si estás usando la popular utilidad de pruebas enzyme, ahora existe el proyecto enzyme-to-json que permite utilizar la función de snapshot testing de Jest junto con enzyme.
El propio Redux ahora usa Jest y Max Stoiber escribió un tutorial sobre cómo probar código escrito con Redux. También hay una excelente guía sobre cómo escribir pruebas para MobX. Si estás usando create-react-app, Jest ahora viene incluido por defecto. Kent C. Dodds creó una gran cantidad de videos en egghead.io que te ayudarán a comenzar con Jest.
Si estás usando otros ejecutores de pruebas, Kenneth Skovhus construyó una increíble biblioteca jest-codemods que automatizará la conversión por ti. Los codemods son geniales: te permitirán evaluar rápidamente si Jest funcionará para ti. ¡Pruébalo!
El changelog completo se puede encontrar en GitHub. Jest 16 fue un verdadero esfuerzo de la comunidad de JavaScript y el proyecto ahora cuenta con más de 220 contribuidores. Agradecemos a cada uno de ustedes por su ayuda para hacer este proyecto grandioso.
