Skip to main content

Casos de prueba del frontend

Esta sección documenta, spec por spec, los casos de uso que cubren las pruebas unitarias del frontend Angular (describe > it, escenario, resultado esperado y mocks). Complementa la visión general de Testing y calidad.

Fuente: instantánea de la rama feat/meta_connections del frontend.

Cifras​

MétricaValor
Archivos *.spec.ts92
Bloques describe308
Casos it(...)883
Specs con TestBed65
Specs sin TestBed (instancia directa con new)27
Specs con xit, xdescribe, fdescribe o fit0 (ninguno omitido ni enfocado)
ÁreaSpecsTests
core/services1171
core/states14140
core/guards419
core/interceptors212
core/helpers219
shared13102
features46520

Páginas​

PáginaContenido
Servicios y helpers del coreservicios API y UI, presence.helper, nav.constant
Estados NgRx del coreacciones, reducers, efectos y selectores
Guards e interceptoresauth, loggedIn, admin, permission, device-token, http-error
Compartidoscomponentes, directivas, pipe truncate, rutas
Conexiones (Meta)tabla y modal de WhatsApp; huecos de la rama Meta
Whaticket: lista de chatschat-list.component.spec.ts
Whaticket: componentes del chatconversación, menús, diálogos, routing
Chat internochat interno y mensajes programados
Features de gestióndepartamentos, etiquetas, respuestas rápidas, tickets bloqueados, módulos, contactos
Features de cuenta y configuraciónlogin, perfil, configuración

Cómo ejecutar​

npm test # ng test: Karma + Jasmine, Chrome, modo watch
ng test --watch=false --browsers=ChromeHeadless # una sola pasada
ng test --code-coverage # informe en coverage/backoffice
ng test --include='**/connections-table.component.spec.ts' # un solo spec

Configuración: karma.conf.js (frameworks jasmine y @angular-devkit/build-angular, reporters progress y kjhtml, restartOnFileChange), tsconfig.spec.json (tipos jasmine, incluye src/**/*.spec.ts) y src/test.ts (teardown.destroyAfterEach: true). No hay helpers ni mocks compartidos: cada spec define sus propios dobles.

Convenciones de TestBed y mocking​

  • Dobles con Jasmine: jasmine.createSpyObj (49 specs) para servicios, Router, ToastrNotificationService, etc.; spyOn para métodos puntuales.
  • Instancia directa: 27 specs no usan TestBed; construyen la clase con new y espías (por ejemplo connections-table.component.spec.ts).
  • HTTP: HttpClientTestingModule o provideHttpClientTesting con HttpTestingController en 8 specs (servicios API e interceptores).
  • NgRx: provideMockStore (4 specs) y provideMockActions (6 specs) para efectos; reducers, acciones y selectores se prueban como funciones puras.
  • Plantillas: NO_ERRORS_SCHEMA en 27 specs para ignorar componentes hijos; TranslateModule en 34 specs.
  • Asincronía: fakeAsync en 4 specs y jasmine.clock en 1; no se usan marble tests.

Qué NO está cubierto​

  • No hay pruebas e2e ni de integración con backend real.
  • No hay umbrales de cobertura configurados (solo reporte).
  • Sin specs: ConnectionInstagramModalComponent, connection-channel-modal, connection-web-modal, connections-filter, authorizeInstagram, handleMetaOAuthReturn, instagramExpiry (detalle en Conexiones (Meta)).
  • Los servicios, guards, interceptores y estados sin spec propio no se documentan aquí por definición: solo hay 92 specs frente a más de 100 archivos no-spec en core/services, core/guards, core/interceptors y core/states.