Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

378
Vistas
Jest TestEnvironment - TypeError: no se puede agregar la propiedad a continuación, el objeto no es extensible

Quiero probar una API de nodo usando Jest. Estoy probando las rutas y websockets. Probar las rutas no fue un problema. Simplemente inicié el servidor usando la opción setupFile .
Para probar los websockets quería pasar el objeto io a testing. Esto no es posible a través de setupFile ya que las pruebas se ejecutan en su propio contexto. Por lo tanto, cambié a la opción testEnvironment . Mi archivo testEnvironment es el siguiente

 const NodeEnvironment = require('jest-environment-node'); class CustomEnvironment extends NodeEnvironment { constructor(config, context) { super(config, context); this.setupServer(); } async setup() { await super.setup(); console.log('Setup Test Environment.'); this.global.io = this.io; this.global.baseUrl = 'http://localhost:' + this.port; } async teardown() { await super.teardown(); console.log('Teardown Test Environment.'); } getVmContext() { return super.getVmContext(); } setupServer() { // Code for starting the server and attaching the io object this.port = portConfig.http; this.io = io; } } module.exports = CustomEnvironment;

Esto funciona y el objeto io se pasa a prueba. Tengo varios archivos de prueba para diferentes partes de la API. Ejecutar aquellos con setupFile no fue un problema, pero ahora Jest solo puede ejecutar un archivo. Todos los conjuntos de pruebas siguientes están fallando con el siguiente mensaje

 ● Test suite failed to run TypeError: Cannot add property next, object is not extensible at Function.handle (node_modules/express/lib/router/index.js:160:12) at Function.handle (node_modules/express/lib/application.js:174:10) at new app (node_modules/express/lib/express.js:39:9)

No puedo encontrar ninguna documentación sobre ese error. Intenté deshabilitar algunos de los archivos de prueba, pero siempre falla después del primero, sin importar cuál sea.

La estructura de los archivos de prueba es la siguiente, si corresponde:

 const axios = require('axios'); describe('Test MODULE routes', () => { const baseUrl = global.baseUrl; const io = global.io; const models = require('../../../models'); // sequelize models which are used in tests describe('HTTP METHOD + ROUTE', () => { test('ROUTE DESCRIPTION', async () => { const response = await axios({ method: 'get', url: baseUrl + 'ROUTE' }); expect(response.status).toBe(200); }); }); // different routes });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Arreglé el error. No tenía nada que ver con una broma, sino con una invocación de module.exports en la configuración del servidor que sobrescribió la exportación de CustomEnvironment con un servidor express.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda