Outputs
Para testear atributos con el decorador @Output
en Angular, puedes seguir estos pasos:
-
Configura el componente que emite el
@Output
para que ejecute una acción cuando cambie el valor del@Output
.onEvent(): void { this.myOutput.emit('some value'); }
-
Utiliza
DebugElement
para simular un evento en el elemento del DOM que cambia el valor del @Output:const debugElement: DebugElement = fixture.debugElement.query(By.css('button[name="my-button"]'));
-
Verifica si la acción se ha ejecutado correctamente cuando ha cambiado el valor del
@Output
. Esto puede hacerse utilizando cualquiera de estas opciones:-
Utilizar una variable que se cambie cuando se ejecuta la acción y verificar su estado con “expect”:
// Arrange let flag = false; // Act fixture.componentInstance.myOutput.subscribe((value) => { flag = true; }); debugElement.triggerEventHandler('click', null}); // Assert expect(flag).toBeTruthy();
-
Utilizar una función espía de Jasmine para verificar si se ha llamado a la función cuando ha cambiado el valor del @Output:
// Arrange const spy = spyOn(fixture.componentInstance, 'onEvent').and.callThrough(); const spyEmit = spyOn(fixture.componentInstance.myOutput, 'emit').and.callThrough(); // Act debugElement.triggerEventHandler('click', null}); // Assert expect(spy).toHaveBeenCalled(); expect(spyEmit).toHaveBeenCalled();
-
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?