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

257
Vistas
¿Puedo simular cosas indefinidas con Rewire (y Jest), o hay otro enfoque para probar funciones no exportadas con dependencias?

Estoy adaptando Jest a un JS antiguo que consta de varios archivos js y se crea mediante concatenación (y se supone que debe ejecutarse en el navegador). Algunos archivos usan "globales" definidos en otros. Para que Jest funcione, probé el paquete Rewire y lo hice funcionar para un caso sin dependencia como este:

 // experiment.js function sum(a, b) { return a + b } const myVar = 'some' // experiment.test.js const rewire = require('rewire') const experimentRewired = rewire('./experiment.js') const $sum = experimentRewired.__get__('sum') const $myVar = experimentRewired.__get__('myVar') test('sum gives 1 + 2 = 3', () => { expect($sum(1, 2)).toBe(3) }) // not a real test, just shows that variables are loaded too test('myVar is equal to string "some"', () => { expect($myVar).toBe("some") })

Este es un caso simple cuando todo lo que se va a probar está dentro de un solo archivo. Lo que estoy tratando de probar ahora es esencialmente inyectar una dependencia de otro archivo:

 // globals.js – config should be injected into experiment.js const config = {} // experiment.js config.name = 'value' // experiment.test.js const rewire = require('rewire') const globalsRewired = rewire('./globals.js') const experimentRewired = rewire('./experiment.js') const $config = globalsRewired.__get__('config') experimentRewired.__set__('config', $config) // trying to inject const $$config = experimentRewired.__get__('config') test('config has .name', () => { expect($$config.name).toBeTruthy() })

pero esto da como resultado ReferenceError: config is not defined . Supongo que lo que sucede es que experiment.js se llama primero y la "inyección" ocurriría después (si no fuera el error anterior).

¿Hay alguna manera de "inyectar" la dependencia o puede concatenar virtualmente los archivos sin guardar un nuevo archivo js (que será el último recurso y no es deseable debido a consideraciones de rendimiento)? Se aceptan sugerencias con y sin Rewire.

about 4 years ago · Juan Pablo Isaza
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