【发布时间】:2019-01-30 18:15:22
【问题描述】:
假设我有一个 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 函数。
关于如何正确执行此类测试的任何建议?同步解决方案不起作用,因为逻辑中存在内在的异步性。
【问题讨论】:
标签: angular jasmine rxjs angular-test