如何测试$cookie是否在AngularJS服务中设置了?



我的服务是:

myApp.service('userService', [
  '$http', '$q', '$rootScope', '$state', '$cookies', '$base64', function($http, $q, $rootScope, $state, $cookies, $base64) {
    var user;
    user = {};
    this.logout = function() {
      user = {};
      delete $cookies.userAccessKey;
      return $state.transitionTo('login');
    };
  }
]);

我想写一个单元测试来确保$cookies.userAccessKey被删除了。我该怎么做呢?当我在这里时,我如何确保user被设置为空?

要检查user是否为空,只需添加一个公共getter或检查器:

myApp.service('userService', [
  '$http', '$q', '$rootScope', '$state', '$cookies', '$base64', function($http, $q, $rootScope, $state, $cookies, $base64) {
    var user;
    this.user = {}; // or a method this.isLoggedIn() for more security
    this.logout = function() {
      this.user = {};
      delete $cookies.userAccessKey;
      return $state.transitionTo('login');
    };
  }
]);

然后,在测试中:

describe('logout', function(){
    beforeEach(function(){
        userService.login(); //relog before each test
    });
    it('should remove the userAccessKey from cookie', function() {
        userService.logout();
        inject(function($cookies) {
          expect(cookies.userAccessKey).toBeUndefined();
        });
    });
    it('should reset user object', function() {
        userService.logout();
        expect(userService.user).toEqual({});
        });
    });
});

最新更新