Допустим, у меня есть компонент Angular, который определяет Observable myObs$
как одно из своих свойств.
В одном тесте при определенных условиях я хочу проверить, что myObs$
не уведомляет. В логике есть некоторые задержки, поэтому тест должен быть асинхронным.
Я использую Жасмин.
Пока мне удалось создать это решение:
it('async test', done => {
let dataEmitted;
myObs$
.pipe(
tap(data => dataEmitted = data),
)
.subscribe();
setTimeout(() => {
if (dataEmitted) {
done.fail('should not emit');
} else {
done();
}
}, 1000);
});
Но мне это далеко не нравится. Я должен полагаться на setTimeout
, чтобы выполнить проверки и вызвать функцию done
.
Есть предложения, как правильно выполнять такие тесты? Синхронные решения не работают, поскольку логике присуща асинхронность.