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
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
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