Saltar al contenido principal
Curso/Proyecto Final/Testing Tipado
Volver a Proyecto Final

Proyecto Final — Leccion 3

·20 min

Testing 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...

Curso de TypeScript — Aprende desde cero