Jasmine - 如何在callFake间谍中链接`.then`和`.finally`?

时间:2017-05-24 11:53:15

标签: javascript angularjs testing promise jasmine

我有以下功能,使用promise和.finally进行服务调用:

myService.getStuff().then(function() {
   this.doStuffWhenServiceOK();
}, function () {
   this.doStuffWhenServiceFails();
}).finally(function() {
   this.doFinally();
});

我正在使用以下间谍监视这项服务:

spyOn(myService, 'getStuff').and.callFake(function() {
   return {
     then: function (succesFn, errorFn) {
       return succesFn();
     }
   };
});

问题是该测试抱怨.finally未知。只是在.then之后添加它似乎不是一个解决方案......

return {
  then: function(successFn) { 
    return successFn();
  },
  finally: function(successFn) {
    return successFn();
  }
}

谁知道如何在.then间谍中链接.finallycallFake

我使用Angular 1。

1 个答案:

答案 0 :(得分:1)

返回finally函数。

function then(succesFn, errorFn) {
    succesFn(); 
    return {finally:function() {}};
}