账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    使用 jest 进行测试, 封装的 async-validator 的工具无法进行校验
    11
    0
    我计划去做一个校验工具, 可以根据服务端的返回来生成 form 表单并进行校验, 所以我选用的是 element-plus, 这个校验工具使用的是 async-validator.后端使用的 是 laravel, 所以我想服务端返回规则, 然后再前端去生成 async-validator 的规则去进行校验. 但是在 jest 测试的过程中出现了问题Error: thrown: "Exceeded timeout of 5000 ms for a test.Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."这里的代码是:describe('validator', () => { it('works-s', (done) => { console.log(Rules.make({ name: 'required' })); (new Schema(Rules.make({ name: 'required' }))).validate({ n: '' }, errors => { console.log(done); console.log(errors); done(); }).then(() => { console.log('a') done() }).catch(() => { console.log('b') done() }) })});这里跟踪的原因是: 没有检测到 done 函数的执行, 但是在官方的jest 测试中是没有任何问题的, 代码在 async-validator test validator 这里describe('async-validator', () => { it('works', done => { new Schema({ v: [ { validator(rule, value, callback) { callback(new Error('e1')); } }, { validator(rule, value, callback) { callback(new Error('e2')); } } ], v2: [ { validator(rule, value, callback) { callback(new Error('e3')); } } ], v3: [ { validator() { return false; } }, { validator() { return new Error('e5'); } }, { validator() { return false; }, message: 'e6' }, { validator() { return true; } }, // Customize with empty message { validator() { return false; }, message: '' } ] }).validate( { v: 2 }, errors => { expect(errors.length).toBe(7); expect(errors[0].message).toBe('e1'); expect(errors[1].message).toBe('e2'); expect(errors[2].message).toBe('e3'); expect(errors[3].message).toBe('v3 fails'); expect(errors[4].message).toBe('e5'); expect(errors[5].message).toBe('e6'); expect(errors[6].message).toBe(''); done(); } ); });});这里唯一的差别就是自己生成的规则Rules.make({ name: 'required'})但是这里返回的内容是数组, 是和 async-validator 符合的console.log(Rules.make({name:'required'})){ name: [ { validator: [Function: validator] }, { validator: [Function: validator] } ]}这样导致一个问题就是无法去写 jest 的执行规则, 想问下各位朋友, 这里应该如何才能让 jest 运行下去, 是哪里还没有注意到么 ?Rules.ts 的源码位置 : https://github.com/imvkmark/w...
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版

    回答动态

    梨花未盛开:发布了悬赏问题9414754预计能赚取 11积分收益
    发布了悬赏问题9414754预计能赚取 11积分收益
    发布了悬赏问题9414754预计能赚取 0积分收益
    发布了悬赏问题9414754预计能赚取 11积分收益
    温柔腔:发布了悬赏问题9414754预计能赚取 0积分收益
    丑萌的人:发布了悬赏问题9414754预计能赚取 0积分收益
    花店没开:发布了悬赏问题9414754预计能赚取 0积分收益
    野性:发布了悬赏问题9414754预计能赚取 0积分收益
    念妻未解忧:发布了悬赏问题9414754预计能赚取 0积分收益
    夏目:发布了悬赏问题9414754预计能赚取 0积分收益