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

108
Visualizações
Pruebas que fallan aleatoriamente con broma y nodo

Necesitaba ejecutar comandos de shell y mantener vivo el proceso para mantener los cambios realizados en las variables env, así que hice una función que se ve así:

 import { spawn } from 'child_process'; function exec(command) { const bash = spawn('/bin/bash', { detached: true }); bash.stdout.setEncoding('utf-8'); bash.stderr.setEncoding('utf-8'); return new Promise(resolve => { const result = { stdout: '', stderr: '', code: 0 }; bash.stdout.on('data', data => { // Removes the last line break (ie \n) from the data. result.stdout += data.substring(0, data.length - 1); // Gets the code by getting the number before the `:` on the last line result.code = Number(result.stdout.split('\n').pop().split(':')[0]); resolve(result); }); bash.stderr.on('data', err => { result.stderr += err; resolve(result); }); // Writes the passed command and another to check the code of the command bash.stdin.write(command + `; echo "$?:${ command }"\n`); }); }

La prueba es sencilla:

 it('should run a command that outputs an error', async () => { // Notice the typo in `echoo` const res = await exec('echoo test'); expect(res.code).toBe(127); });

Al ejecutar esta prueba, a veces falla y el res.code es 0 en lugar de 127 .

Cuando se prueba sin bromas, funciona perfectamente el 100% del tiempo.

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