2
我有一個angularjs應用程序,它驗證某些輸入字段。我正在通過Jasmine編寫單元測試來測試和維護這些字段的有效性。使用茉莉花與角JS輸入驗證
注:驗證正常工作正常,只是與茉莉花,它似乎並沒有更新。 單元測試有沒有語法錯誤,而僅僅導致:
Error: Expected false to equal true.
at new jasmine.ExpectationResult
at null.toEqual
at null.<anonymous>
at jasmine.Block.execute
at jasmine.Queue.next_
at chrome-extension
舉例來說,我有,在指令:
}).directive('billingNumberPopup', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
scope.$watch(
function() {
return ctrl.$viewValue;
},
function(value){
numValidation(value);
}
);
function numValidation(viewValue){
if (!viewValue || viewValue == "" || (!viewValue.toString().match(/[a-z]/gi) && viewValue.toString().match(/[0-9]/g).length == 6)){
ctrl.$setValidity('billingNumber',true);
}
else
{
ctrl.$setValidity('billingNumber',false);
}
,然後從我的單元測試...
it('Check if validation works', function(){
var len = $scope.dataToPost.length;
$scope.addRow();
console.log("Hi");
$scope.$apply(function(){
$scope.dataToPost[len].billingNumber = "HELLO";});
$scope.$apply();
console.log($scope.dataToPost[len].billingNumber);
console.log($("input[ng-model='d.billingNumber']"));
expect($("input[ng-model='d.billingNumber']")[len].classList.contains("ng-invalid")).toEqual(true);
});
其中「HELLO」不是有效的帳單號碼,而scope.dataToPost
是綁定到輸入字段的數據。我會假設,改變價值,並呼籲$scope.$apply
會觸發驗證,有什麼建議嗎?
我的理解是,指令是屁股單元測試有點痛。也許將驗證測試移到e2e測試中會更容易? –
是的,非常感謝您在正確的方向上引導我。儘管Jasmine能夠測試指令本來不錯,但我想我會用e2e來測試指令。再次感謝! –