Испытание мрамора RXJS: выполнить действие на определенном этапе
Я создал собственный наблюдаемый интервал, который можно приостановить:
export function pausableInterval(
duration,
pauser$: Observable<boolean>,
scheduler?: SchedulerLike
): Observable<number> {
let iteration = 0;
const interval$ = interval(duration, scheduler);
const _pauser$ = pauser$.pipe(map(pause => (pause ? NEVER : interval$)));
return _pauser$.pipe(
switchMap(val => val),
map(() => iteration++)
);
}
Я пытаюсь протестировать его с помощью мрамора rxjs, но я не знаю, как сделать паузу, а затем возобновить его во время теста, так как я не знаю, когда и как изменить мой pause$
Тема на всех этапах теста, выполняемых планировщиком.
Рабочий тест (без паузы, простой тест):
it(
'should complete without any pause',
marbles(m => {
const pause$ = new BehaviorSubject(false);
const expected = m.cold('---0--(1|)');
const destination = pausableInterval(m.time('---|'), pause$, m.scheduler).pipe(
take(2),
map(v => v.toString())
);
m.expect(destination).toBeObservable(expected);
})
);
Я попробовал тригерринг pause$.next(true/false)
с setTimeout(), но это не надежно.. где я могу активировать это? Спасибо