我有一个组件调用服务,通常会返回observable。
let res = this.serviceApi.getInfo();
res.subscribe(()=>do smothing;)
res.catch(()=>{
do smoething;
return Observable.throw('error)
});
我想如何测试res.catch?
我厌倦了模拟服务并返回Observable.throw('错误')但是测试抛出错误
答案 0 :(得分:1)
您的代码存在2个问题
1 - 正如cartant指出的那样,您在可观察序列上调用.catch()而不是将其添加到您的可观察序列中。你可以通过重新分配res来添加它
res = res.catch(err => {
return Observable.throw('error');
});
但是我认为在初始化时可以更好地定义可观察序列。这使可观察的定义保持在一个地方
let res = this.serviceApi.getInfo()
.catch(err => {
return Observable.throw('error');
});
2 - 您在分配catch方法之前订阅了可观察序列,因此catch方法永远不会运行。
因此,如果将catch方法添加到可观察序列并在分配catch方法后调用subscribe方法,则会有类似
的内容。let res = this.serviceApi.getInfo()
.catch(err => {
return Observable.throw('error');
});
res.subscribe(
res => {
// success callback
},
err => {
// error callback, err is the error returned from your catch method
});