Итак, у меня есть такой код:
ngOnInit() {
this.openDialogWhenUploading();
}
openDialogWhenUploading() {
this.store.select(getFileIsUploading).pipe(
takeUntil(this.onDestory$),
delay(1000)
).subscribe(uploading => {
if(uploading === true) {
this.dialog.open()
}
})
}
Что я сделал, чтобы упростить тестирование, так это вернуть наблюдаемый метод из openDialogWhenUploading
и подписаться на него в моем тесте, что-то вроде этого:
ngOnInit() {
this.openDialogWhenUploading().subscribe();
}
openDialogWhenUploading() {
return this.store.select(getFileIsUploading).pipe(
takeUntil(this.onDestory$),
delay(1000),
tap(uploading => {
if (uploading === true) {
this.dialog.open()
}
})
)
}
и в моем тесте:
describe('openDialogWhenUploading', () => {
it('should open dialog when uploading', () => {
openDialogWhenUploading().subscribe(() => {
expect(dialg.open).toHaveBeenCalled();
})
})
})
Есть ли лучшее решение?