Nodejs测试不会在Promise中出错

时间:2018-06-16 21:31:27

标签: javascript node.js promise jestjs supertest

所以我对nodejs和承诺处理有点新意,我试图找出我在这里做错了什么。

现在,当我运行此测试时,我希望它失败并显示throw new Error中的错误消息,而是测试通过,然后只打印错误消息Invalid: XXXXXXX作为{{1}的一部分}。

这是我的测试的样子。如果UnhandledPromiseRejectionWarning不是valid,我怎样才能使此测试失败?这个测试是用jest运行的。我附上了测试通过的截图(当它失败时)。enter image description here

true

1 个答案:

答案 0 :(得分:2)

出现

UnhandledPromiseRejectionWarning,因为未处理承诺拒绝。

Jest固有地支持规范中的承诺。为了使异步规范能够利用现有的promise,它应该从spec:

返回
it('should receive expected response for each parameter group', () => {
    return request(baseURL).get(endPointExtensions[0]).then((res) => {
        const validate = ajv.compile(schema);
        const valid = validate(res.body);
        if (valid) console.log('Valid!');
        else throw new Error('Invalid: ' + ajv.errorsText(validate.errors));
    });
});

或者:

it('should receive expected response for each parameter group', async () => {
    const res = await request(baseURL).get(endPointExtensions[0]);
    const validate = ajv.compile(schema);
    const valid = validate(res.body);
    if (valid) console.log('Valid!');
    else throw new Error('Invalid: ' + ajv.errorsText(validate.errors));
});