Volver a Proyecto Final
Proyecto Final — Leccion 3
·20 minTesting Tipado
Escribe tests completos con TypeScript.
Testing con TypeScript
typescript
// types.ts
export interface Resultado<T> {
exito: boolean;
datos?: T;
error?: string;
}
// servicio.ts
export function dividir(a: number, b: number): Resultado<number> {
if (b === 0) {
return { exito: false, error: "Division por cero" };
}
return { exito: true, datos: a / b };
}
// servicio.test.ts
describe("dividir", () => {
it("divide dos numeros", () => {
const resultado = dividir(10, 2);
expect(resultado.exito).toBe(true);
expect(resultado.datos).toBe(5);
});
it("retorna error al dividir por cero", () => {
const resultado = dividir(10, 0);
expect(resultado.exito).toBe(false);
expect(resultado.error).toBe("Division por cero");
});
});
Type safety en tests
typescript
// Tipar el contexto de test
interface TestContext {
db: Database;
usuario: Usuario;
}
describe("Usuarios", () => {
const ctx: TestContext = {} as TestContext;
beforeEach(() => {
ctx.db = crearDB();
ctx.usuario = crearUsuario();
});
it("obtiene usuario", async () => {
const resultado = await ctx.db.obtener(ctx.usuario.id);
expect(resultado).toBeDefined();
});
});
Ejercicio pratico
Escribe tests para una función crearUsuario tipada.
exercise.ts
Loading...
Resultado
Haz clic en "Ejecutar" para ver el resultado...