Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

251
Visualizações
¿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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda