Testing
Una de las grandes ventajas de Clean Architecture es que permite probar reglas importantes sin depender de servidores, bases de datos ni servicios externos.
Piramide recomendada
txt
E2E tests
Integration tests
Use case tests
Domain testsCuanto mas cerca del dominio, mas rapidos y estables deberian ser los tests.
Tests de dominio
Prueban reglas puras.
txt
given order without lines
when confirm
then error: order cannot be confirmedNo necesitan mocks complejos, base de datos ni servidor web.
Tests de casos de uso
Prueban la coordinacion.
txt
given existing cart
and valid payment
when checkout
then order is created
and payment is captured
and event is publishedAqui se pueden usar dobles de prueba para repositorios, gateways y event bus.
Tests de infraestructura
Prueban adaptadores concretos:
- Repositorios contra base de datos real o contenedor.
- Clientes HTTP contra servidor fake.
- Serializadores y mappers.
- Consumers de eventos.
Estos tests son mas lentos, pero dan confianza en la integracion.
Tests end to end
Prueban el sistema desde fuera:
txt
POST /orders
GET /orders/{id}No deben cubrir cada combinacion interna. Su funcion es confirmar que las piezas principales encajan.
Estrategia de mocks
Usa mocks para dependencias externas, no para el dominio.
Buena senal:
txt
FakePaymentGateway
InMemoryOrderRepositoryMala senal:
txt
MockOrder
MockOrderLine
MockDomainRuleChecklist
- Las reglas de dominio tienen tests rapidos.
- Los casos de uso se prueban sin HTTP.
- Los adaptadores tienen tests de integracion.
- Los tests E2E cubren flujos criticos.
- Los errores de negocio se prueban explicitamente.
