我有以下一段HTML,它是通過switch case動態加載的。沒有必要爲此創建單獨的指令,因此我們決定這樣做。驗證Angular單元測試中的ng-pattern
<li ng-form="form">
<input name="number" type="number" ng-model="selectedCriterion.valueFrom" ng-pattern="selectedCriterion.regexPattern">
</li>
用下面的單元測試
describe('form', function() {
rootScope.selectedCriterion = { regexPattern: '[0-5]+' };
it('allows numbers to be filled in the input field', function() {
var compiledElement = $compile(html)(rootScope);
rootScope.$apply();
var form = rootScope.form;
var inputElement = compiledElement.find('input[name="number"]');
inputElement.val(4).triggerHandler('input');
rootScope.$digest();
expect(inputElement.val()).toEqual('4');
expect(form.$valid).toEqual(true);
inputElement.val(8).triggerHandler('input');
rootScope.$digest();
expect(inputElement.val()).toEqual('8');
expect(form.$valid).toEqual(false);
});
});
我想這樣做是在單元測試測試NG模式,沒有在E2E測試水平。 測試在最後的期望
expect(form.$valid).toEqual(false);
失敗似乎形式無法驗證自己在這個層面上,即使我編譯我的HTML和調用$手動消化週期。
我在做什麼錯?我可以驗證此級別的表單嗎?
編輯:我已經深入搜索了StackOverflow和Google,但沒有成功。
您需要提供更多信息(例如,哪些期望失敗,指令中是否包含此html等) – vbuhlev