为什么调用submit会导致jasmine进入无限循环?

时间:2015-06-23 01:21:46

标签: javascript angularjs jasmine

我有一个测试:

 describe('item-form', function(){
    var element;
    var elementScope;

    beforeEach(function(){
      element = $compile('<item-form></item-form>')($scope);
      $scope.$digest();
      elementScope = element.isolateScope();
    });


    it('should call $scope.addItem when form is submitted', function(){
      spyOn(elementScope, 'addItem');

      element.find('.item-form').submit();

      $scope.$digest();

      expect(elementScope.addItem).toHaveBeenCalled();
    });
});

测试一个呈现这个的指令:

<form class="item-form" ng-submit="addItem()">
    <input type="text" ng-model="name" name="iName"  />
</form>

该指令定义为:

.directive('itemForm', function(){
        return {
            restrict: 'E',
            templateUrl: 'item-form.html',
            controller: 'ItemController',
            scope: {
                name: '@',
                addItem: '&'
            }
        };
    });

当jasmine启动浏览器进行测试时,它会显示所有传递的测试,但会不断刷新页面,就像它处于无限提交循环中一样。任何想法如何防止这种情况?

之前我还有一个单击按钮提交的表单。这种方法工作正常,但我没有按钮。我想我可以隐藏按钮,但我仍然想了解原因。

0 个答案:

没有答案