我在项目中有一个非Angular的API库。它有一个.request
方法,返回jQuery.Deferred promises。我创建了一个简单的Angular服务来包装.request
方法,将其结果转换为Angular $q promise。它大致是这样的:
var module = angular.module('example.api', []);
module.factory('api', function(
$q,
$window
) {
function wrappedRequest() {
var result = $window.API.request.apply($window.API, arguments);
return $q.when(result);
};
return {
request: wrappedRequest
};
});
我想写一个测试以确保此服务正常运行。它将提供一个带有API的模拟$window,该API的request方法返回jQuery.Deferred promises。我需要确保生成的对象是Angular $q promise。
如何确定一个对象是否是Angular $q promise?
对于这个问题中给出的示例,区分jQuery.Deferred promises和Angular $q promises已足够,但理想情况下,我们应该能够普遍地识别Angular $q promises。