Intento probar mi componente, sé que funciona bien, pero mi prueba da error ya que la versión de Angular se actualizó a 12.
Este es mi componente:
ngOnInit() { if (versonA) { this.doThis(); } else { this.doThat(); } } private doThis() { this.myService.confirm({ message: message, accept: () => { this.doAcceptLogic(); }, reject: () => { console.log('reject') this.doRejectLogic(); } }); }Y esta es mi prueba:
beforeEach(async () => { fixture = TestBed.createComponent(MyComponent); component = fixture.componentInstance; fixture.autoDetectChanges(); spyOn(TestBed.get(MyService), 'confirm').and.callFake((params: Confirmation) => { params.reject(); }); await fixture.whenStable(); });Y aún así, este spyOn no parece funcionar. Puse muchos registros de la consola en mi código y el método doThis() aún se llama, pero el registro dentro de mi método de confirmación ("rechazar") no se escribe en la consola. No puedo ver por qué.
Cuando cambio el método doThis() a público y lo llamo directamente desde mi prueba como componente.doThis(), luego se ejecuta en myService simulado.
¿Alguien puede explicar mi por qué?
¡Muchas gracias!
(component as any).doThis();o usando []
component['doThis']();