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

252
Vistas
Cambie la variable process.env para una prueba única usando JEST

tengo el siguiente código en un archivo que estoy tratando de probar:

foo.js

 let localEnv = (process.env.LOCAL_ENVIRONMENT).toLowerCase() === 'prod' ? 'prod' : 'stage';

actualmente, configuro este valor usando setupFiles que apunta a env.js y contiene:

 process.env.LOCAL_ENVIRONMENT = 'prod';

mi pregunta es, ¿cómo cambio process.env.LOCAL_ENVIRONMENT para test (o cualquier otra cosa) en foo.test.js ? Solo necesito hacer esto en una sola prueba, por lo que esta línea se cubrirá en mi cobertura de prueba.

Intenté hacer algo como esto pero no funcionó...

foo.prueba.js

 test('Nonprod', async () => { process.env.LOCAL_ENVIRONMENT = 'test'; ... });
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puede modificar el valor como lo intentó. Sin embargo, debe tener en cuenta que en su archivo original solo accede a la variable cuando carga este script por primera vez. Para que esto funcione tienes que hacer algo como esto:

 // in your test file foo.test.js const prev = process.env.LOCAL_ENVIRONMENT process.env.LOCAL_ENVIRONMENT = 'test'; // from now on the env var is test const myModule = require('./foo.js'); // foo.js is executed and the var is read as test process.env.LOCAL_ENVIRONMENT = prev; // change value back

Esto tiene algunos inconvenientes, ya que no puede probar múltiples escenarios con esto (ya que el módulo solo se carga una vez).

Si quieres probar más escenarios tienes múltiples opciones:

Una sería separar la lógica y el proceso.env.LOCAL_ENVIRONMENT, por ejemplo

 function getLocalEnv(env = process.env.LOCAL_ENVIRONMENT) { return env.toLowerCase() === 'prod' ? 'prod' : 'stage'; }

Esta función ahora es muy fácil de probar y ya no depende de env vars para eso.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Encontré la respuesta sobre cómo restablecer y volver a requerir el módulo probado aquí: cómo restablecer el módulo importado entre pruebas

about 4 years ago · Juan Pablo Isaza Denunciar

0

La forma más fácil de probarlo para un caso de prueba específico es configurar la prueba en un ámbito de descripción y aplicar/eliminar el valor env en beforeAll/afterAll o beforeEach/afterEach ganchos según sus necesidades.

 describe('Test example', () => { describe('prod (default)', () => { test('do the thing', () => { doTheThing(); // process.env.LOCAL_ENVIRONMENT is by default 'prod' because of your setupFiles }); }); describe('test env', () => { const oldEnv = process.env.LOCAL_ENVIRONMENT; // or { ...process.env } to copy the whole env beforeAll(() => { process.env.LOCAL_ENVIRONMENT = 'test'; }); afterAll(() => { process.env.LOCAL_ENVIRONMENT = oldEnv; // do not forget to do this }); test('do the thing', () => { doTheThing(); // process.env.LOCAL_ENVIRONMENT is 'test' here }); }); });
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