Integración de Unit Test con Servicios
Clase 58 de 80 • Curso de Angular 4
Contenido del curso
Introducción a Angular 4
Setup del Ambiente de Trabajo
Conceptos Básicos
- 9

Para qué nos sirven los Módulos y Componentes
08:10 min - 10

Tipos de Data Binding y String Interpolation
05:05 min - 11

Property Binding
06:04 min - 12

Event Binding
03:04 min - 13

ngModel y two way binding en Angular
05:12 min - 14

Directivas en Angular 4 y ngFor
07:39 min - 15

Cómo usar ngIf en Angular 4.0
03:04 min - 16

Instalando librerías con NPM (Google Maps)
06:48 min
Directivas
Angular UI
Ruteo
- 24

Qué hace el router en Angular 4
03:11 min - 25

Implementación de Rutas en el Proyecto
07:36 min - 26

Href vs router link: navegación angular
02:27 min - 27

Resaltando el link activo con CSS para indicar visualmente en que componente nos encontramos
01:53 min - 28

Parámetros de ruta con routerLink en Angular
06:01 min - 29

Parámetros tipo Query
03:53 min - 30

Creando una vista de detalle para el proyecto
09:06 min - 31

Página de contacto Angular desde cero
07:45 min
Servicios
- 32

Servicios en Angular para compartir datos
00:58 min - 33

Creando nuestro propio servicio
07:11 min - 34

Configurando Firebase en nuestro proyecto
05:12 min - 35

Guardando Records en Firebase
12:20 min - 36

Obteniendo records desde Firebase
08:40 min - 37

Obteniendo coordenadas usando Geocoding
13:45 min - 38

Reto: Crear una vista para editar records
09:29 min - 39

Mostrando marcadores en el Mapa de Google
03:02 min
Conexión Remota (Http y Sockets)
Pipes
Animaciones en Angular
Testing en Angular
Autenticación y Protección de Rutas
- 59

Cómo funcionan los JSON Web Tokens
03:05 min - 60

Preparación de vistas para login y registro
11:58 min - 61

Registrando usuarios
07:29 min - 62

Loggeando usuarios
07:18 min - 63

Guardias canActivate en Angular: Proteger rutas con autenticación
11:09 min - 64

Cómo integrar Facebook login con Firebase
09:08 min - 65

Logout en Angular con Firebase
05:28 min
RxJS
- 66

Cómo funciona RxJS con metáfora de oficina
02:09 min - 67

Mostrar email del usuario logueado en Angular
06:32 min - 68

Uso de los Observables
04:30 min - 69

Cómo implementar type ahead con Observables y RxJS
10:43 min - 70

Implementar formularios reactivos con type ahead
07:58 min - 71

Cómo rellenar campos automáticamente con Google
01:28 min
Publicando nuestro proyecto
Fin del curso
Sesiones en vivo
Contenido Bonus
Aprende a inyectar un servicio en Angular y a probarlo con unit testing paso a paso. Verás cómo usar Angular CLI, el decorador Injectable, la sección providers del componente y la obtención del servicio en pruebas con fixture.debugElement.injector.get. Todo para asegurar que el componente y el servicio mantienen datos consistentes.
¿Cómo se crea e inyecta un servicio en Angular?
Crear y usar un servicio dedicado mejora la organización y reutilización del código. Aquí se define un arreglo de lugares con id y name, y un método para exponerlos.
¿Cómo definir el servicio con injectable y get places?
- Decorar con @Injectable para habilitar la inyección de dependencias.
- Exportar la clase PlacesService.
- Declarar un array de lugares con id y name.
- Exponer un método getPlaces que hace return del arreglo.
import { Injectable } from '@angular/core';
@Injectable()
export class PlacesService {
places = [
{ id: 1, name: '...' },
{ id: 2, name: '...' },
];
getPlaces() {
return this.places;
}
}
¿Cómo inyectarlo con providers en el componente?
- Declarar el servicio en providers del componente para uso exclusivo del componente.
- Inyectar en el constructor con una propiedad private placesService: PlacesService.
- Evitar agregarlo en app.module.ts cuando solo se usa en este componente.
@Component({
selector: 'app-place',
providers: [PlacesService],
template: '...'
})
export class PlaceComponent {
places = [];
constructor(private placesService: PlacesService) {
this.places = this.placesService.getPlaces();
}
}
¿Cómo se prueba el servicio desde el componente con unit testing?
La meta es validar que el componente expone los mismos datos que el servicio. Se crea un test: “should have the same places as the service”.
¿Cómo obtener el servicio en el test con fixture.debugElement.injector.get?
- Crear el fixture del componente.
- Obtener la instancia del servicio con fixture.debugElement.injector.get.
- Reutilizar las primeras líneas de configuración del test anterior.
it('should have the same places as the service', () => {
const fixture = TestBed.createComponent(PlaceComponent);
const app = fixture.componentInstance;
const placeService = fixture.debugElement.injector.get(PlacesService);
// comparación abajo
});
¿Cómo hacer la aserción con expect y toEqual?
- Usar expect para comparar referencias de datos.
- Validar que app.places y placeService.places sean iguales con toEqual.
expect(app.places).toEqual(placeService.places);
¿Qué ajustes en el componente hacen pasar el test?
- Declarar el array places en el componente:
places = []. - Asignar en el constructor:
this.places = this.placesService.getPlaces(). - Corregir typos en expect si aparecen.
- Confirmar que providers incluye el servicio para que no falle la inyección.
¿Qué comandos y próximos pasos consolidan el aprendizaje?
Asegura la ejecución correcta de las pruebas y sigue las recomendaciones didácticas.
¿Cómo ejecutar ng test y revisar en localhost 9877?
- Correr ng test para lanzar Karma y el navegador.
- Si no abre, ingresar a localhost:9877 manualmente.
- Verificar que pasan los tests del AppComponent generado por Angular 4 y los del PlaceComponent.
¿Qué tareas sugiere el instructor para practicar?
- Implementar al menos cinco unit tests en la app de Plazy Square.
- Revisar el recurso oficial de Angular testing para profundizar.
- Compartir los resultados con la comunidad.
- Prepararse para el siguiente módulo: RxJS.
¿Tienes dudas, ideas de casos de prueba o quieres mostrar tus resultados? Compártelos en comentarios y sigamos mejorando juntos.