Cómo ocultar la salida de console.log de JavaScript en las pruebas de Jest
Estaba trabajando hoy en una base de código que tenía muchos console.log
resultados intencionales en todos los entornos excepto en producción, por lo que aparecían en los resultados de las pruebas de Jest. Habría sido tedioso ir y eliminarlos uno por uno, por lo que ideé esta configuración simple para suprimir todas las console.log
salidas a la vez mientras se ejecuta Jest.
Configurando Hay
Este truco se basa en la habilidad nativa de Jest para burlarse de cualquier cosa. Lo que haremos básicamente es burlarnos del log
método del console
objeto y dejar intactos los otros métodos.
Primero debemos decirle a Jest que ejecute un archivo de instalación antes de ejecutar las pruebas. Para ello, editaremos el jest.config.js
archivo que suele estar en la raíz de su proyecto con otras propiedades de configuración y agregaremos la siguiente línea:
setupFilesAfterEnv: ['/src/jest.setup.js']
Podemos verificar en la documentación de Jest lo que setupFilesAfterEnv
hace:
Una lista de rutas a módulos que ejecutan algún código para configurar o configurar el marco de prueba antes de que se ejecute cada archivo de prueba en la suite.
Ahora, cuando ejecutemos nuestras pruebas, primero ejecutarán el jest.setup.js
que crearemos ahora.
Burlándose de console.log
Cree un archivo en src/setup.js
o donde haya señalado su ruta en el paso anterior. Luego le agregarás esto:
global.console = {
log: jest.fn(),
debug: console.debug,
trace: console.trace,
}
Esto anula el log
método y permite a los demás. Como todavía quería tener la capacidad de generar algo en las pruebas, mapeé debug
y trace
. Puede asignar otros que pueda necesitar, como los console.table
que representan elementos en una tabla, útiles para registrar objetos o matrices. Para ser honesto, hasta que escribí esto, nunca había mirado la página del objeto de la consola en MDN y hay muchos métodos interesantes como el console.dir
que muestra una lista interactiva de las propiedades del objeto JavaScript especificado .
palabras de cierre
Ahora su console.log
salida se suprime mientras se ejecutan sus pruebas Jest. Si trabaja en equipo, asegúrese de informar al resto del equipo sobre este cambio documentándolo, ya que alguien podría estresarse tratando de hacer console.log
algo y no verlo donde debería estar.