Validatorul de vârstă testat doar pe happy path
TypeScript · Formularul de înregistrare al unei aplicații web pentru public · Teste · dificultate 1/3 · ~5 min
Un coleg i-a cerut asistentului AI: „Scrie parseAge(input) pentru formularul de înregistrare. Primește stringul brut din câmp și returnează vârsta ca număr. Respinge orice nu e un număr întreg între 0 și 130: aruncă un Error, ca formularul să poată afișa un mesaj. Adaugă teste.”
Codul a venit cu un docstring care descrie clar contractul și cu trei teste care trec. Faci review atât funcției, cât și testelor ei, înainte de merge.
Contractul promis de docstring:
- Whitespace-ul de la margini e ignorat.
- Un input valid e un număr întreg între 0 și
MAX_AGE(130), inclusiv. - Inputul gol, textul nenumeric, zecimalele, valorile negative și cele peste
MAX_AGEsunt respinse aruncând o eroare. - O valoare „reparată” nu trebuie returnată niciodată în tăcere; apelantul se bazează pe excepție.
Testele trec. Decide dacă asta înseamnă ceva.
Repară codul până trec testele ascunse.
code.ts
Teste vizibile (trec pe codul primit)
import { describe, it, expect } from "@debunk/harness";
import { parseAge, validateAge } from "./code";
describe("parseAge", () => {
it("parses a plain age", () => {
expect(parseAge("42")).toBe(42);
});
it("ignores surrounding whitespace", () => {
expect(parseAge(" 27 ")).toBe(27);
});
it("validateAge reports non-numeric input as an error", () => {
const r = validateAge("abc");
expect(r.ok).toBe(false);
});
});