typestar

Simular el tiempo en JavaScript

Los temporizadores simulados vuelven una espera instantánea y determinista.

import test from "node:test";
import assert from "node:assert/strict";

function debounce(fn, wait) {
  let timer;
  return (...args) => {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), wait);
  };
}

test("debounce fires once, after the wait", (t) => {
  t.mock.timers.enable({ apis: ["setTimeout"] });
  const calls = [];
  const debounced = debounce((value) => calls.push(value), 100);

  debounced("a");
  debounced("b");
  assert.deepEqual(calls, []);

  t.mock.timers.tick(100);
  assert.deepEqual(calls, ["b"]);
});

Cómo funciona

  1. t.mock.timers.enable recibe las API a simular.
  2. tick adelanta el reloj esa cantidad de milisegundos.
  3. Nada duerme, así que la prueba sigue rápida.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
23
Caracteres a escribir
512
Tokens
148
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 81 segundos.

Escribe este fragmento

Paso 2 de 2 en Mocks y tiempo; paso 6 de 9 en Pruebas con node:test.

← Anterior Siguiente →