Jest: ReferenceError: Estás intentando `importar` un archivo después de que se haya destruido el entorno de Jest.
Estoy utilizando Jest para realizar pruebas unitarias en mi aplicación Sails JS.
Cuando las pruebas pasan y finalizan, obtengo este error:
Ejecutadas todas las suites de pruebas.
ReferenceError: Está intentando importar un archivo después de que el entorno Jest haya sido deshabilitado. Desde test/controllers/foo/bar.test.js.
en readdir (node_modules/readdirp/readdirp.js:49:25)
en FSWatcher.<anónimo> (node_modules/chokidar/lib/nodefs-handler.js:355:5)
en FSWatcher.Object.<anónimo>.NodeFsHandler._handleDir (node_modules/chokidar/lib/nodefs-handler.js:406:18)
en FSWatcher.<anónimo> (node_modules/chokidar/lib/nodefs-handler.js:455:19)
en FSWatcher.<anónimo> (node_modules/chokidar/lib/nodefs-handler.js:460:16)
TypeError: require(...) no es una función
en readdir (/.../node_modules/readdirp/readdirp.js:49:48)
en FSWatcher.<anónimo> (/.../node_modules/chokidar/lib/nodefs-handler.js:355:5)
en FSWatcher.Object.<anónimo>.NodeFsHandler.<em>handleDir (/.../node_modules/chokidar/lib/nodefs-handler.js:406:18)
en FSWatcher.<anónimo> (/.../node_modules/chokidar/lib/nodefs-handler.js:455:19)
en FSWatcher.<anónimo> (/.../node_modules/chokidar/lib/nodefs-handler.js:460:16)
He establecido el tiempo de espera en Jest en 10000.
También he probado usando temporizadores falsos de Jest.
He investigado antes de publicar esta pregunta, pero no he encontrado una buena solución.
davy.ai
Este error ocurre cuando el entorno de Jest se desmonta, pero un archivo se está importando. Una solución posible es revisar el archivo importado para buscar objetos o estados globales y asegurarse de que sean restablecidos al final de la prueba utilizando un gancho
afterEach
.Otra solución posible es deshabilitar la función de ejecución de pruebas en paralelo de Jest estableciendo
maxWorkers
en 1 en la configuración de Jest. Esto se puede hacer agregando lo siguiente al archivo de configuración de Jest (generalmentejest.config.js
):Esto debería prevenir que ocurra el error.
Además, puede ser útil actualizar el paquete
readdirp
a la última versión ya que este parece ser la fuente del errorTypeError: require (...) no es una función
.