Javascript AngularJS自定义验证指令单元测试:模型值未定义

Javascript AngularJS自定义验证指令单元测试:模型值未定义,javascript,angularjs,validation,unit-testing,ngdescribe,Javascript,Angularjs,Validation,Unit Testing,Ngdescribe,我有一个指令,在我的输入上添加一个验证程序,供ng消息使用: angular.module('app.module.submodule').directive('dateFormatFr', function () { return { require: 'ngModel', link: linkValidator }; }); function linkValidator(scope, elm, attrs, ctrl) { ctrl.

我有一个指令,在我的输入上添加一个验证程序,供ng消息使用:

angular.module('app.module.submodule').directive('dateFormatFr', function () {
    return {
        require: 'ngModel',
        link: linkValidator
    };
});

function linkValidator(scope, elm, attrs, ctrl) {
    ctrl.$validators.datefr = function (modelValue) {
        if (ctrl.$isEmpty(modelValue)) {
            return true;
        }
        if (!(modelValue instanceof Date)) {
// this check avoid errors on datepickers
            return modelValue.match('^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$');
        }
        return true;
    };
}
我正在尝试对它进行单元测试(使用ng描述):


我的错:我传递了一个字符串而不是RegExp

我还将返回语句替换为以下语句:

return /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/.test(modelValue);
发现当只检查一个条目时,使用“测试”方法更有效


为那些花时间在上面的人感到抱歉。

我的错:我传递了一个字符串而不是RegExp

我还将返回语句替换为以下语句:

return /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/.test(modelValue);
发现当只检查一个条目时,使用“测试”方法更有效

为那些花时间在上面的人感到抱歉

return /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/.test(modelValue);