javascript - 测试返回值是否是一个 promise

标签 javascript angularjs jasmine angular-promise

给定具有功能的 Angular Controller

this.checkResponse = function (response) {
  if (response.success === true) {
    return $q.resolve(response);
  } else {
    return $q.reject(response);
  }
};

如何使用 Jasmine 测试返回值是一个 promise ?我可以轻松验证我是否在函数内调用了resolve或reject,或者我收到了jasmine.any(Function),但如何确保它是一个 promise ?

最佳答案

我会在测试中这样做:

//done callback will ensure that success function should called
it('blabla', function(done){
    //when 
    app.checkResponse().then(function(){
        done();
    }, function(){
        fail("error callback has been called");
        done();
    });
})

它将确保您必须返回一个 promise ,否则它将因超时而失败。对我来说这是最快的解决方案。

这就是你要找的吗?还是我误解了你的意思?

关于javascript - 测试返回值是否是一个 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34636690/

相关文章:

php - jQuery POST 表单数据行

javascript - 通过id将json数组合并为一个json数组

JavaScript正则表达式验证时间格式 "09:15 AM"

javascript - Angular - 使用 jasmine 测试 websocket 包装器

javascript - Chrome 应用程序在全屏中创建新窗口 - html 元素不是全高

javascript - 在 Ul 上使用向上/向下箭头到达溢出自动元素的顶部/底部时显示隐藏的元素

javascript - 使用 Bootstrap 网格系统在 AngularJS 中显示垂直堆叠的数据

html - 如何使工具提示 div 根据屏幕的哪一侧改变一侧? ( Angular )

javascript - 如何监视类对象内部调用的函数

angularjs - 在使用 karma 进行测试时,**phantom js** 比 **chrome** 有什么用?