Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

379
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!