我在猜测如何实际检查函数的返回值是否是一个承诺方面遇到很多麻烦。我将Jasmine与Karma和angularjs一起使用。我已提供服务:
var app = angular.module('myService', []);
function simpleResource ($q) {
this.cget = function () {
var deferred = $q.defer();
return deferred.promise;
};
this.get = function () {
// body...
};
this.save = function () {
// body...
};
this.delete = function () {
// body...
};
}
app
.service('nsResource', simpleResource);
如您所见,cget方法应该返回一个promise,我如何测试返回的值是否实际上是一个promise?
(function(angular) {
'use strict';
angular.module('includeExample', ['ngAnimate'])
.controller('ExampleController', ['$scope', '$q',
function($scope, $q) {
$scope.a = "";
$scope.asyncGreet = function(name) {
var deferred = $q.defer();
deferred.notify('About to greet ' + name + '.');
if (true) {
deferred.resolve('Hello, ' + name + '!');
} else {
deferred.reject('Greeting ' + name + ' is not allowed.');
}
return deferred.promise;
};
$scope.promise = $scope.asyncGreet('Robin Hood');
$scope.a = $scope.promise.constructor.name;
}
]);
})(window.angular);
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-beta.1/angular.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-beta.1/angular-animate.js"></script>
<body ng-app="includeExample">
<div ng-controller="ExampleController">
<div class="slide-animate-container">
<span ng-bind="a"><span>
</div>
</div>
</body>
您可以使用constructor
:
deferred.promise.constructor == Promise
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句