У меня есть форма со следующим входом:Жасмин тест вход с рисунком
<input type="email" name="email" ng-model="register.form.email" ng-pattern="emailRegex">
Я хочу, чтобы проверить, что форма является недействительным, если пользователь недействительный адрес электронной почты:
it('...', function() {
form.email.$setViewValue('invalid');
expect(form.email.$valid).toBeFalsy(); // OK
form.email.$setViewValue('[email protected]');
expect(form.email.$valid).toBeFalsy(); // OK
form.email.$setViewValue('[email protected]');
expect(form.email.$valid).toBeFalsy(); // Not OK
});
Последнее ожидание терпит неудачу, потому что вход действителен, хотя регулярное выражение электронной почты ожидает домен. Кажется, что шаблон не используется в моем тесте, потому что, когда я меняю тип на текст, он уже терпит неудачу при первом ожидании. Как я могу убедиться в том, что шаблон был выбран в тестах?
Для полноты, это регулярное выражение (не написано мной):
^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[_A-Za-z0-9]+[_A-Za-z0-9-]*[_A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$
Изменение типа к text
не работал.
Я использую жасмин 2.4.1 и угловой 1.4.2. Я использую ngHtml2JsPreprocessor, как описано here, чтобы инициализировать форму в моих тестах.
Edit:
Это как сформировать инициализируются:
beforeEach(inject(function($rootScope, $templateCache, $compile) {
var $scope = $rootScope.$new();
vm = $controller('RegisterController', {$scope: $scope});
var templateHtml = $templateCache.get("register.html");
var template = angular.element("<div>" + templateHtml + "</div>");
$compile(template)($scope);
var form = $scope.registerForm;
$scope.$apply();
scope = $scope;
}));
Что, что тест будет доказательство? Этот 'ng-pattern' работает? Да, это работает, возможно, команда, отвечающая за развитие AngularJS, поймает эту ошибку перед вами. Вы хотите протестировать regExp? Извлеките его и протестируйте его в модульном тесте –