我有一些看起来像的代码:
function foo(){
bar().catch(function(){
//do stuff
}
}
function bar(){
return promiseReturner().then(
function(result){
if(_.isEmpty(result)){
throw "Result is empty";
}
}
)
}
我试图测试//do stuff
为空时调用result
块:
deferred.resolve(null);
foo();
$rootScope.$apply();
现在这实际上会触发throw
块,但由于某种原因throw
块没有被catch
块捕获。更有趣的是,当相同的代码在测试环境之外运行时,它的行为与预期的一样。
为什么我无法在测试代码中触发catch块?
答案 0 :(得分:0)
目前尚不清楚您正在使用哪种承诺实现和上下文,但也许您可以尝试在foo函数中添加一个return语句
function foo(){
return bar().catch(function(){
//do stuff
}
}