【发布时间】:2021-03-04 12:46:23
【问题描述】:
我想在 Jasmine 中测试 rxjs Observable 的“完整”处理程序。
这是我要测试的代码:
doSomething()
{
const subscription = this.service.getObservable().subscribe(
(next) => {
//do something
},
(error) => {
//handle error
},
() => {
// do something on complete <== How can I test this function?
}
);
}
我已经通过创建一个间谍为“下一个”处理程序编写了测试:
const spy = spyOn<any>(service, 'getObservable').and.callFake(() => {
return from(['nextValue']);
})
我通过创建一个引发错误的间谍来为“错误”处理程序编写测试:
const spy = spyOn<any>(service, 'getObservable').and.callFake(() => {
return throwError(new Error('error message'));
})
问题:如何模拟完整的处理程序?
【问题讨论】:
-
当我们收到来自
service.getObservable()的成功响应时,是否触发了onComplete 方法。如果我错了,请纠正我?