【问题标题】:Jasmine - How to chain a `.then` and a `.finally` in a callFake spy?Jasmine - 如何在 callFake 间谍中链接“.then”和“.finally”?
【发布时间】:2017-05-24 11:53:14
【问题描述】:

我有以下函数,它使用承诺和.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();
  }
}

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

我使用 Angular 1。

【问题讨论】:

    标签: javascript angularjs testing promise jasmine


    【解决方案1】:

    返回一个finally函数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 2023-04-01
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      相关资源
      最近更新 更多