Javascript 如何用Catch和Finally来模拟单元测试

Javascript 如何用Catch和Finally来模拟单元测试,javascript,angularjs,unit-testing,phantomjs,karma-jasmine,Javascript,Angularjs,Unit Testing,Phantomjs,Karma Jasmine,我向AngularJS Promise添加了catch来处理异常。它工作得很好,但是现有的Jasmine单元测试失败了,因为mock需要相应地更改 请找到密码。 在现有的API调用中,我添加了catch和handleerror函数 function calAPI(){ GetAPIData(request) .then(updatedata) [catch](handleError) [finally](dofinaltask();) } function handleError(){

我向AngularJS Promise添加了catch来处理异常。它工作得很好,但是现有的Jasmine单元测试失败了,因为mock需要相应地更改

请找到密码。 在现有的API调用中,我添加了catch和handleerror函数

function calAPI(){
GetAPIData(request)
.then(updatedata)
[catch](handleError)    
[finally](dofinaltask();)
}

function handleError(){

//calling again the same API if the first request fails.

GetAPIData(request)
.then(updatedata)
[finally] (dofinaltask();)

}
单元测试的现有模拟

GetAPIData: function(){
return {then: function() {return { finally: function(){ } }; } };
}
我在这上面加了一句话

GetAPIData: function(){
return {then: function() {return { catch: function(){ }, finally: function(){ } }; } };
}
但单元测试给出的误差如下所示

TypeError: undefined is not constructor (evaluating GetAPIData(request).then(updatedata)[catch](handleError)[finally](dofinaltask();)

请帮助我以其他方式修改mock或catch

您能给出规范代码吗?请查找添加的代码以编写类似的测试,很快就放弃了。使用$q模拟承诺。单元测试已经编写,应用程序已经在线。当我对应用程序进行更改时,我需要保持单元测试运行不失败。