es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Probando la función sleep de JavaScript utilizando Jest.

Tengo esta función:

function sleep(milliseconds) {
  return new Promise((resolve) => {
    setTimeout(resolve, milliseconds);
  });
}

Básicamente esta función retrasa la lógica, por ejemplo:

function sleep(milliseconds) {
  return new Promise((resolve) => {
    setTimeout(resolve, milliseconds);
  });
}

async function delayedGreeting() {
  console.log("Hola");

  await sleep(2000); //esperará 2 segundos y luego mostrará el siguiente código

  console.log("Mundo!");
}

delayedGreeting();

Quiero probar la función sleep usando Jest.

test('prueba', async () => {
  await sleep(2000);
});

No sé cómo probar esta función.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para probar la función sleep utilizando Jest, se puede crear un caso de prueba que compruebe si la función realmente retrasa la ejecución verificando la diferencia de tiempo entre antes y después de la llamada a la función. Aquí hay un ejemplo de caso de prueba:

    test('sleep retrasa la ejecución', async () => {
      const before = new Date().getTime();
      await sleep(2000);
      const after = new Date().getTime();
      const difference = after - before;
      expect(difference).toBeGreaterThanOrEqual(2000);
    });
    

    En este caso de prueba, primero registramos la marca de tiempo actual utilizando new Date().getTime() y la almacenamos en la variable before. Luego, llamamos a la función sleep con 2000 milisegundos como argumento y esperamos su finalización. Después de eso, registramos otra marca de tiempo utilizando new Date().getTime() y la almacenamos en la variable after. Calculamos la diferencia de tiempo entre after y before y la almacenamos en la variable difference.

    Finalmente, utilizamos la función expect de Jest para afirmar que la variable difference es mayor o igual a 2000, lo que significa que la función sleep realmente retrasó la ejecución al menos 2000 milisegundos.

Comments are closed.