测试返回值是一个承诺

Test that returned value is a promise

给定 angular 具有功能的控制器

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

如何使用 Jasmine 测试返回值是否为 Promise?我可以很容易地验证我在函数内部调用了 resolve 或 reject,或者我收到了 jasmine.any(Function),但我如何确保它是一个承诺?

我会在测试中这样做:

//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();
    });
})

它将确保您必须 return 承诺,否则它将因超时而失败。对我来说,这是最快的解决方案。

这就是您要找的吗?还是我误会你了?