с этим кодом:
select(): void {
this.initialObservable$
.pipe(
first(),
switchMap(() => this.service.getData())
).subscribe(// do stuff);
}
Я только что столкнулся с ошибкой с утечкой памяти. вызов службы был отправлен снова позже, и я понял, что подписка никогда не очищалась, потому что содержимое подписки запускалось снова.
Очевидно, это мое исправление:
select(): void {
this.initialObservable$
.pipe(
switchMap(() => this.service.getData()),
first()
).subscribe(// do stuff);
}
и теперь это работает нормально - перемещение вызова оператора first()
в конец канала.
Я немного посмотрел на тесты жасминового мрамора и считаю, что мне понадобится ссылка на наблюдаемый поток, чтобы проверить его, чего у меня нет. Так что регрессионное тестирование будет довольно запутанным, и это заставляет меня думать, что то, что я делаю, должно быть плохой практикой. Как правильно написать такой код для модульного тестирования, пожалуйста? Предпочтительно с мраморными пробами.