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
t.mock.timers.enablerecibe las API a simular.tickadelanta el reloj esa cantidad de milisegundos.- Nada duerme, así que la prueba sigue rápida.
Palabras clave y builtins usados aquí
constfromfunctionimportletreturn
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.
Paso 2 de 2 en Mocks y tiempo; paso 6 de 9 en Pruebas con node:test.