我有一个测试:
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启动浏览器进行测试时,它会显示所有传递的测试,但会不断刷新页面,就像它处于无限提交循环中一样。任何想法如何防止这种情况?
之前我还有一个单击按钮提交的表单。这种方法工作正常,但我没有按钮。我想我可以隐藏按钮,但我仍然想了解原因。