我试图用茉莉和业力为我的角应用程序编写单元测试 .
$ 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)