我试图用茉莉和业力为我的角应用程序编写单元测试 .

$ timeout.flush在指令的单元测试中导致无限的摘要循环

这是我的指令代码

.directive("myDirective", function($timeout) {
      return {
        link: function(scope) {
          $timeout(function() {
            console.log("myDirective after timeout");
            scope.testNum = 1;
          },1000);
        }
      };
    });

这是单元测试代码

describe("Directive: myDirective", function() {
    var scope, element, $timeout;
    beforeEach(function() {
      angular.mock.module("myApp");
      angular.mock.inject(function($compile, $rootScope, _$timeout_) {
        $timeout = _$timeout_;
        scope = $rootScope.$new();
        var directiveElement = angular.element(
          "<my-directive></my-directive>"
        );
        element = $compile(directiveElement)(scope);
        scope.$digest();

      });
    });

    it('should update scope.testNum', function() {
      $timeout.flush();
      expect(scope.testNum).toBe(1);
    });
  });

我收到了这个错误

Chrome 47.0.2526(Mac OS X 10.10.4)指令:myDirective应更新scope.testNum FAILED错误:[$ rootScope:infdig] http://errors.angularjs.org/1.4.8/$rootScope/infdig?p0 = 10&p1 =%5B%5D在错误(本机)at web / public / javascripts / lib / angular.min.js:6:416 at r . $ digest(web / public / javascripts / lib / angular.min.js: 131:499)at . $ apply(web / public / javascripts / lib / angular.min.js:134:78)at Object.fn(web / public / javascripts / lib / angular.min.js:146:449) )在Function.self.defer.flush(web / public / javascripts / lib / angular-mocks.js:126:32)的函数 . $ delegate.flush(web / public / javascripts / lib / angular-mocks.js: 1750:20)在对象 . (网络/测试/单元/ mainSpecs / myDirectiveSpec.js:35:16)