Appearance
Testing Backend - Portal API
Estrategia de Testing
Pirámide de Tests
- Unit Tests (Muchos): >80% coverage
- Integration Tests (Moderados): Tests con DB real
- E2E Tests (Pocos): Flujos completos
Coverage objetivo: > 80%
Unit Tests
Ubicación
Tests unitarios en Tests/Unit/Portal/
Herramientas
- PHPUnit
- Mockery para mocks
- Faker para datos de prueba
Componentes a Testear
Middleware:
- PortalAuthMiddleware
- Resolución de tenant por dominio
- Autenticación de cliente
- Bloqueos por intentos fallidos
Services:
ClientIdentificationService
- Identificación de clientes
- Creación de portal_client
- Gestión de bloqueos
PortalCtaCteService
- Consulta de deudas
- Enriquecimiento de datos
- Resumen de cuenta
CuponPagoService
- Generación de cupones
- Validación de códigos ITF
- Listado con paginación
PaymentGatewayService
- Creación de pagos
- Procesamiento de webhooks
- Validación de firmas
Controllers:
- Validación de inputs
- Respuestas HTTP correctas
- Manejo de errores
Integration Tests
Ubicación
Tests/Integration/Portal/
Setup
- Docker PostgreSQL para tests
- Migraciones automáticas
- Datos de prueba (fixtures)
- Cleanup automático
Casos a Testear
- Flujo completo de login
- Consulta de deudas con DB real
- Generación de cupones
- Procesamiento de pagos
Comandos
Ejecutar tests:
bash
vendor/bin/phpunit Tests/Unit/Portal/
vendor/bin/phpunit Tests/Integration/Portal/Coverage:
bash
vendor/bin/phpunit --coverage-html coverage/Mejores Prácticas
- Usar mocks para dependencies externas
- Un assert por test cuando sea posible
- Nombres descriptivos de tests
- Setup y teardown apropiados
- Tests independientes entre sí