Saltar al contenido principal

Jest en 2016

· 10 min de lectura
Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

2016 fue un gran año para las pruebas de JavaScript con Jest. Durante los primeros seis meses del año, reescribimos Jest y construimos una base sólida para mejorar significativamente el rendimiento y la experiencia del desarrollador al probar código JavaScript. Tipamos todo el código base con Flow, creamos numerosas pruebas de integración para Jest mismo y adoptamos lerna para convertir Jest de un framework en una Plataforma de Pruebas de JavaScript sin Dolor.

El recién creado react-test-renderer finalmente permitió probar componentes de react-native. A través del preset jest-react-native (ahora integrado directamente en react-native), Jest ahora funciona sin configuración adicional para cualquier proyecto React y viene preconfigurado en create-react-app y react-native. Integramos componentes clave de Jest en el empaquetador de react-native y la nueva función de pruebas de instantánea desde entonces se ha utilizado fuera de Jest: se integró con React Storybook como "storyshots" y está siendo adoptada por otros ejecutores de pruebas como ava.

El proyecto pretty-format se reescribió con el rendimiento en mente para impulsar la función de instantáneas de Jest, se fusionó recientemente en el monorepositorio de Jest y también es útil en otros ejecutores de pruebas. Hoy Jest se centra más en recopilar diferentes ideas y soluciones para las pruebas que en una implementación específica de un framework de pruebas.

Quiero agradecer profundamente a todas las personas que contribuyeron a Jest este año, tanto de la comunidad de código abierto como de Facebook: Dmitrii Abramov, Cristian Carlesso, Dan Abramov, Daniel Lo Nigro, Maxim Derbin, Evan Scott, Forbes Lindesay, Keyan Zhang y más de 60 personas. También damos la bienvenida a Michał Pierzchała (@thymikee) como primer contribuidor externo oficial de Jest. Ha hecho un excelente trabajo gestionando los issues y PRs en el repositorio. Si quieres empezar a contribuir a Jest, tenemos varias buenas primeras tareas y siempre estamos felices de ayudar en nuestro canal de Discord.

repl.it con integración de Jest

Amjad Massad creó un contenedor de Jest para que ahora puedas probar Jest directamente en el navegador. Puedes usarlo desde ahora al crear issues en GitHub, lo que debería ayudar a solucionar problemas más rápidamente. Amjad y Haya están construyendo repl.it para democratizar la programación mediante herramientas y plataformas poderosas pero simples para educadores, estudiantes y desarrolladores. ¡También están contratando ingenieros talentosos!

Actualización de la comunidad

Nos sentimos profundamente honrados de que más de 100 empresas hayan adoptado Jest en los últimos seis meses. Compañías como Twitter, Pinterest, Paypal, nytimes, IBM (Watson), Spotify, eBay, SoundCloud, Intuit, FormidableLabs, Automattic, Trivago y Microsoft han migrado total o parcialmente a Jest para sus necesidades de pruebas de JavaScript. Muchas gracias por darle una oportunidad a este proyecto. También queremos agradecer a todos los que hablaron sobre Jest en conferencias y meetups, y a quienes escriben posts sobre su experiencia con Jest.

Esto es lo que ha pasado en la comunidad en los últimos dos meses:

Nuevas funciones, cambios y correcciones en Jest 17 y 18

Jest se creó inicialmente hace más de cinco años y como un marco tan antiguo ha acumulado cierta deuda técnica. Por eso tendemos a realizar cambios disruptivos con más frecuencia de lo que podría parecer necesario: creemos que es importante reducir gradualmente la deuda técnica para garantizar que Jest como proyecto se mantenga sostenible a largo plazo. No anunciamos Jest 17 en una publicación de blog y si no lo has actualizado en el último mes, quizá te resulte útil el registro de cambios.

  • Disruptivo: Se eliminó pit en favor de it o test y mockImpl en favor de jest.fn() o mockImplementation.

  • Disruptivo: Se renombró --jsonOutputFile a --outputFile.

  • Disruptivo: Se actualizó testRegex para incluir archivos test.js y spec.js.

  • Disruptivo: Se reemplazó scriptPreprocessor con la nueva opción transform.

  • Disruptivo: Ahora la función testResultsProcessor debe devolver los resultados modificados.

  • Potencialmente disruptivo: Ahora se resuelven correctamente snapshotSerializers, setupFiles, transform, testRunner y testResultsProcessor con un algoritmo de resolución en lugar de usar path.resolve. Esto significa principalmente que ya no se necesita <rootDir> para estas opciones.

  • Añadido: pretty-format y jest-editor-support se integraron en Jest.

  • Añadido: expect.any, expect.anything, expect.objectContaining, expect.arrayContaining, expect.stringMatching.

  • Añadido: --testResultsProcessor ahora está disponible en la CLI.

  • Añadido: Implementación de observación de archivos en jest-haste-map.

  • Añadido: El uso de Jest en modo observación se puede ocultar mediante JEST_HIDE_USAGE.

  • Añadido: expect.assertions(number) garantiza que se realice una cantidad específica de aserciones en una prueba.

  • Añadido: Función .toMatchSnapshot(?string) para dar nombre a las instantáneas.

  • Añadido: Comparadores toMatchObject, toHaveProperty, toHaveLength.

  • Añadido: expect.extend.

  • Añadido: Soporte para serializadores de instantáneas personalizados.

  • Añadido: Las diferencias grandes ahora se contraen por defecto en instantáneas y aserciones. Se añadió --expand (o -e) para mostrar la diferencia completa.

  • Añadido: jest.resetAllMocks reemplaza a jest.clearAllMocks.

  • Añadido: --json ahora incluye información sobre pruebas individuales dentro de un archivo.

  • Corregido: Rechazos de promesas no manejados en test.concurrent.

  • Corregido: babel-plugin-jest-hoist al usar jest.mock con tres argumentos.

  • Corregido: El global JSON en jest-environment-node ahora proviene del contexto vm en lugar del contexto padre.

  • Corregido: Jest ya no imprime trazas de pila de babel.

  • Corregido: Los temporizadores falsos se reinician cuando se llama a FakeTimers.useTimers().

  • Corregido: Las expresiones regulares se escapan correctamente en instantáneas.

  • Corregido: Mejorada la impresión formateada de objetos grandes.

  • Corregido: NaN% Failed en notificaciones del sistema operativo al usar --notify.

  • Corregido: La primera ejecución de tests sin tiempos en caché ahora usa procesos separados en lugar de ejecutarse en serie.

  • Corregido: Comparaciones de Map/Set.

  • Corregido: test.concurrent ahora funciona con --testNamePattern.

  • Corregido: Mejoras en el matcher .toContain.

  • Corregido: Resolución adecuada de módulos con extensiones de plataforma en react-native.

  • Corregido: Los objetos globales integrados en jest-environment-node ahora funcionan correctamente.

  • Corregido: Los objetos mock se crean en el contexto de la VM en lugar del contexto padre.

  • Corregido: .babelrc ahora es parte de la clave de caché de transformación en babel-jest.

  • Corregido: Análisis de docblocks con módulos haste.

  • Corregido: Finalización con código apropiado cuando no se alcanza el umbral de cobertura.

  • Corregido: Jest ahora limpia todo el historial de desplazamiento en modo watch.

  • Obsoleto: jest-react-native fue marcado como obsoleto y ahora redirige a react-native.

Planes para Jest en el primer semestre de 2017

Hace seis meses compartimos nuestros planes para Jest y nos complace haber ejecutado casi todos satisfactoriamente. Para los próximos seis meses, esto es lo que planeamos:

  • Retroalimentación instantánea: Integración con Nuclide y un modo watch mejorado y más rápido.

  • Mejor experiencia para desarrolladores: Nuevas APIs de mocking y aserciones mejoradas.

  • Mejor rendimiento y uso de memoria: Analizar Jest y ser más conscientes sobre la eficiencia.

  • Mejoras en snapshots: Modo de aprobación de snapshots, resaltado de sintaxis y APIs mejoradas para react-test-renderer.

  • Sitio web: Renovaremos el sitio web y documentación, añadiendo una chuleta de Jest.

No proporcionaremos plazos ni estimaciones para estas funcionalidades, y es posible que no lleguemos a implementarlas todas. Si deseas ayudar a hacerlas realidad, envíanos issues y pull requests con tus ideas y trabajemos juntos para mejorar Jest en 2017.