Angularjs和茉莉,测试承诺

时间:2015-08-15 16:38:51

标签: javascript angularjs unit-testing

我试图测试我的控制器,当它启动一个返回包含用户名的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

提前感谢您的帮助!

0 个答案:

没有答案