Javascript 如何在catchError操作符中测试投掷者返回的可观测值?
我有一个函数,它将操作符添加到命令分派返回的可观察对象中。我添加了Javascript 如何在catchError操作符中测试投掷者返回的可观测值?,javascript,rxjs,jasmine,Javascript,Rxjs,Jasmine,我有一个函数,它将操作符添加到命令分派返回的可观察对象中。我添加了catchError,它将捕获的错误转换为我的一种错误类型。Source observable在函数内部订阅,外部不可见。功能运行良好,但我在为此编写单元测试时遇到了问题,因为函数中的代码是异步的,但异步代码的执行在函数范围之外是不可见的 doStuff(){ dispatch('MyCommand',{data:data}).pipe( catchError(错误=>throwError(新的MyError()), 最后(),
catchError
,它将捕获的错误转换为我的一种错误类型。Source observable在函数内部订阅,外部不可见。功能运行良好,但我在为此编写单元测试时遇到了问题,因为函数中的代码是异步的,但异步代码的执行在函数范围之外是不可见的
doStuff(){
dispatch('MyCommand',{data:data}).pipe(
catchError(错误=>throwError(新的MyError()),
最后(),
轻触(结果数据=>{
processResultData(结果数据);
}),
).subscribe();
}
尝试更改doStuff函数,如下所示:
doStuff() {
commandService.dispatch( 'MyCommand', { data: data }).pipe(
catchError( error => throwError( new MyError())),
last(),
tap( resultData => {
processResultData( resultData );
}),
).subscribe(success => {
// ... what happens on success, keep it blank
}, error => {
// ... what happens on error, keep it blank
});
}
我认为在subscribe块中添加错误函数处理程序应该可以消除该错误(现在应该可以捕获错误)