Necesito ayuda para escribir pruebas unitarias para router.events.subscribe . ActivationEnd para usar un objeto de instantánea que tiene propiedades que necesito para mi aplicación. A continuación se muestra mi fragmento de código.
en constructor,
this.router.events.subscribe(e => this.onRouterEvent(e)) onRouterEvent(e: Event): void { if (e instanceof ActivationEnd) { this.section = e.snapshot.data.title; this.dynamicSubNavLabel = e.snapshot.routeConfig?.data?.label; } }Archivo de prueba unitaria
class ActivationEnd { snapshot: any = { data: { title: 'a title' }, routeConfig: { data: { label: 'a label' } }, params: { orderID: "3525", projectID: "24", usecaseID: "3" } }; } class MockRouter { events: Observable<Event> = new Observable(observer => { observer.next(new ActivationEnd()); // This does NOT make the condition true (e instance of ActivationEnd) observer.complete(); }); get url(): string { return 'asd'; } navigateByUrl(url: string) { return url; } navigate(path: string) { return path; } }y usando la clase MockRouter en proveedores
TestBed.configureTestingModule({ declarations: [AppComponent], imports: [ RouterTestingModule ], providers: [ { provide: Router, useClass: MockRouter }, ], schemas: [NO_ERRORS_SCHEMA] })¿Pueden ayudarme, por favor, cómo puedo simular el evento ActivationEnd y pasarlo a onRouterEvent() para que las condiciones se evalúen como verdaderas?
Saludos, Alpesh