使用控制器测试角度服务

时间:2013-07-11 20:23:59

标签: javascript unit-testing angularjs angularjs-scope

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

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

1 个答案:

答案 0 :(得分:0)

我发现的解决方案似乎非常简单明了:

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();
});