У меня сейчас есть некоторые проблемы с модульным тестированием компонента, наблюдаемого в Angular
У меня есть этот компонент класса:
export class HomePage {
signInLoadingState$: Observable<AsyncActionStatus>;
constructor(private ngRedux: NgRedux<AppState>, private router: Router) {
//signInLoadingState is an enum
this.signInLoadingState$ = this.ngRedux.select(s => s.user.signInLoadingState);
this.signInLoadingState$.subscribe({
next: this.navigateOnSuccess.bind(this)
});
}
navigateOnSuccess(result: AsyncActionStatus) {
if (result === AsyncActionStatus.SUCCEEDED) {
this.router.navigate([dashboardUrl]);
}
}
}
И я хочу проверить навигацию, когда наблюдаемоезначение AsyncActionStatus.SUCCEEDED
.
Я пытаюсь смоделировать значение селектора, чтобы установить последующее значение следующим образом:
it('should navigate to new page', inject([Router], async (router: Router, done: DoneFn) => {
spyOn(router, 'navigate');
const stub = MockNgRedux.getSelectorStub<AppState, AsyncActionStatus>((s) => s.user.signInLoadingState);
stub.next(AsyncActionStatus.SUCCEEDED);
stub.complete();
fixture.detectChanges();
await fixture.whenStable();
expect(router.navigate).toHaveBeenCalledWith([dashboardUrl]);
}));
Но навигация никогда не вызывается :(.