茉莉花測試輸入我有以下的輸入形式:與模式
<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
});
最後一次expectatijon失敗,因爲輸入有效,但電子郵件正則表達式期望域。感覺就好像這個模式在我的測試中沒有使用,因爲當我將這個類型改爲文本時,它在第一次期望時已經失敗。我怎樣才能確保模式在測試中被挑選出來?
爲了完整,這是正則表達式(不是我寫的):
^[_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在我的測試中初始化表單。
編輯:
這是如何形成的初始化:
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?提取它並在單元測試中測試它 –