使用控制器测试角度服务

Testing angular services with controllers

本文关键字:服务 测试 控制器      更新时间:2023-09-26

我有我的自定义角度服务,它有一个处理$scope.$watch的方法,可以对它进行单元测试吗?

angular.module('moduleName', []).factory('$name', function () {
  return {
     bind: function ($scope, key) {
       $scope.$watch(key, function (val) {
         anotherMethod(key, val);
       }, true);
     },
     ...
  };
});

我发现的解决方案似乎非常简单和好:

beforeEach(function () {
    inject(function ($rootScope) {
        scope = $rootScope.$new();
        scope.$apply(function () {
            scope.value = true;
        });
        $name.bind(scope, 'value');
        scope.$apply(function () {
            scope.value = false;
        });
    });
});
beforeEach(function () {
    value = $name.get('value');
});
it('should have $scope value', function () {
    expect(value).toBeFalsy();
});