我试图测试我的控制器,当它启动一个返回包含用户名的promise的服务时调用它。它总是失败,我不明白为什么。
模块:
@
控制器:
(function () {
'use strict';
angular.module('dilib', [
// Angular modules
'ngAnimate',
'ngRoute',
// Custom modules
'dilib.layout',
// 3rd Party Modules
'LocalStorageModule',
'restangular'
])
.config(function (RestangularProvider) {
RestangularProvider.setBaseUrl('http://localhost/services/webapi/');
})
.config(function (localStorageServiceProvider) {
localStorageServiceProvider.setPrefix('dilib');
});
})();
服务:
(function () {
'use strict';
var controllerId = 'requestAuthorizationController';
angular
.module('dilib')
.controller(controllerId, requestAuthorizationController);
requestAuthorizationController.$inject = ['requestAuthorizationService'];
function requestAuthorizationController(requestAuthorizationService) {
/* jshint validthis:true */
var vm = this;
vm.username = undefined;
activate();
function activate() {
return requestAuthorizationService.requestAuthorization().then(function (result) {
vm.username = result;
return vm.username;
});
}
}
})();
规格:
(function() {
'use strict';
var serviceId = 'requestAuthorizationService';
angular
.module('dilib')
.service(serviceId, requestAuthorizationService);
requestAuthorizationService.$inject = ['$q'];
function requestAuthorizationService($q) {
//API
var service = {
requestAuthorization: requestAuthorization,
}
return service;
/////////////////////////////////////////////////////////////////////
function requestAuthorization(user) {
var defer = $q.defer();
defer.resolve('visitor');
return defer.promise;
}
}
})();
这是plunker。
提前感谢您的帮助!