javascript - Jasmine - 如何在 callFake spy 中链接 `.then` 和 `.finally`?

标签 javascript angularjs testing promise jasmine

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

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

我正在使用以下 spy 监视此服务:

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 spy 中链接 .then.finally

我使用 Angular 1。

最佳答案

返回一个 finally 函数。

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

关于javascript - Jasmine - 如何在 callFake spy 中链接 `.then` 和 `.finally`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44157677/

相关文章:

javascript - 将此变量传递给 Angular $http 回调

javascript - 通过使用 angularjs 拖动来动态更改模板

javascript - 如何使元素行为位置 :fixed within another scrolling element?

javascript - 如何在指令模板中使用传递的数据?

c# - 未通过请求找到 WebAPI HTTPDelete 方法,但在 Swagger 中找到

javascript - AngularJS $state.go() 不发出 $stateChangeSuccess?

javascript - enzyme /Jest 测试错误 - 不变违规 : Target container is not a DOM element

ruby-on-rails - 测试在新实例上调用方法的函数的 "right"方法是什么?

javascript - 用 mocha 测试异步函数

javascript - Phaser - 街机碰撞物理