我有一些代码如下:
function foo(){
bar().catch(function(){
//do stuff
}
}
function bar(){
return promiseReturner().then(
function(result){
if(_.isEmpty(result)){
throw "Result is empty";
}
}
)
}
我正在尝试测试 //do stuff
block 是否在 result
为空时被调用:
deferred.resolve(null);
foo();
$rootScope.$apply();
现在这确实触发了 throw
block ,但是由于某些原因 throw
block 没有被 catch
函数捕获。更有趣的是,当同样的代码在测试环境之外运行时,它的行为符合预期。
为什么我无法在我的测试代码中触发 catch block ?
最佳答案
不清楚您使用的是哪种 promise 实现和上下文,但也许您可以尝试向 foo 函数添加一个返回语句
function foo(){
return bar().catch(function(){
//do stuff
}
}
关于javascript - Promise catch 未在测试中被捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35095505/