Releases: alesyt0h/angularAdv-pruebasApp
Releases · alesyt0h/angularAdv-pruebasApp
Pruebas Integradas Intermedias/Avanzadas
- Revisar la existencia de una ruta
- RouterTestingModule - NO hace falta importar el RouterModule entero para probar rutas, angular ya dispone de un módulo para ello
- Evadir errores por selectores desconocidos
NO_ERRORS_SCHEMA
- Confirmar una directiva de Angular, en este caso, que exista un RouterOutlet
By.directive(RouterOutlet)
- Reemplazar servicios de Angular por servicios falsos controlados
class FakeRouter .... {provide: Router, useClass: FakeRouter}
- Comprobar que un elemento HTML redirija a un sitio específico
const elementos = fixture.debugElement.queryAll(By.directive(RouterLinkWithHref));
for(const elem of elementos) {
if (elem.attributes['routerLink'] === '/medicos') {
....
- Comprobar parámetros de elementos que retornen observables
class FakeActivatedRouter {
private _subject = new Subject();
push(valor: any){
this._subject.next(valor);
}
get params(){
return this._subject.asObservable();
}
}
.....
it('Debe de colocar el id = nuevo', () => {
const activatedRoute: FakeActivatedRouter = TestBed.get(ActivatedRoute);
activatedRoute.push({id: 'nuevo'});
....
Pruebas Integradas Básicas
- Aprender la configuración básica de una prueba de integración
- Comprobación básica de que un componente de HTML es creado correctamente
- Archivos
spec.ts
generados automáticamente por el AngularCLI - TestingModule - Se gestiona igual que cualquier módulo
TestBed.configureTestingModule({ declarations... })
- ComponentFixture - Se debe crear el componente y la instancia del Fixture
fixture = TestBed.createComponent(UsuarioComponent)
component = fixture.componentInstance;
- Depurar un componente HTML
fixture.debugElement.query(By.css('h3')).nativeElement
- Esperar a que el Fixture esté estable para darle tiempo a que se haya renderizado el componente HTML
fixture.whenStable().then( () => { expect... } )
- Separación entre pruebas unitarias y pruebas de integración
xxxx.unit.spec.ts
Pruebas Unitarias Intermedias/Avanzadas
- Saltar pruebas con
xit
- Event Emitter
- Formularios
- Validaciones del formulario
- Espías
spyOn()
- Expect de llamado de funciones
toHaveBeenCalled()
- Simular retornos de servicios
callFake()
- Simular retorno de valores
returnValue()
- Simular confirmaciónes de usuario
spyOn(window,'confirm').and.returnValue(true)
Pruebas Unitarias Básicas
- Introducción a las pruebas unitarias, uso del
describe
xdescribe
it
yexpect
- Cobertura del código que se esta probando con
ng test --code-coverage
- Pruebas Unitarias Básicas Realizadas:
- Strings
- Números
- Booleanos
- Arreglos
- Clases