我有一个构建表单的指令:
app.directive('config', function() {
return {
restrict: 'E',
scope: {
data: '='
},
template: '<form name="configForm">' +
'<input type="number" max="10" ng-model="config.item" name="configItem"/>' +
'<div class="form-error" ng-show="configForm.$error.max">Error</div>' +
'</form>',
controller: 'ConfigDirectiveController',
};
});
我想要做的是通过单元测试验证在给定一些输入的情况下会显示错误消息。使用 angular 1.2 我可以修改 $scope.config.item ,它会更新视图值并显示错误。
据我所知,对于 angular 1.3,如果模型未通过验证,则视图值不会更新......所以我需要修改视图值以确保显示错误消息。
如何访问“configItem”输入,以便设置视图值以确保显示错误消息?
编辑显示单元测试
我看到该值设置正确,但错误仍然有一个 ng-hide 应用于标签。当我查看页面并手动更改输入值时,ng-hide 将被删除,如果我输入大于 10 的值,则会显示错误。
beforeEach(inject(function($compile, $rootScope) {
element = angular.element('<config data="myData"></config>');
$scope = $rootScope.$new();
$scope.myData = {};
element = $compile(element)($scope);
}));
it('should warn that we have a large number', function() {
var input = element.find('[name="configItem"]')[0];
$scope.$apply(function() {
angular.element(input).val('9000000001');
});
errors = element.find('[class="form-error ng-binding"]');
expect(errors.length).toBe(1);
})