Mocks en JavaScript
t.mock.fn registra llamadas; t.mock.method reemplaza un método de un objeto.
import test from "node:test";
import assert from "node:assert/strict";
function record(store, lang, tpm) {
if (tpm <= 0) throw new RangeError("tpm must be positive");
return store.save(lang, tpm);
}
test("saves through the store", (t) => {
const save = t.mock.fn(() => "saved");
const result = record({ save }, "go", 104);
assert.equal(result, "saved");
assert.equal(save.mock.callCount(), 1);
assert.deepEqual(save.mock.calls[0].arguments, ["go", 104]);
});
test("replaces a method for one test", (t) => {
const clock = { now: () => 0 };
t.mock.method(clock, "now", () => 1234);
assert.equal(clock.now(), 1234);
});
Cómo funciona
- El arreglo
callsdel mock guarda los argumentos y el resultado. - Un método reemplazado se restaura al terminar la prueba.
- Verifica la llamada, no la implementación.
Palabras clave y builtins usados aquí
constfromfunctionifimportreturnthrow
El intento, en números
- Líneas
- 22
- Caracteres a escribir
- 620
- Tokens
- 184
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 100 segundos.
Paso 1 de 2 en Mocks y tiempo; paso 5 de 9 en Pruebas con node:test.