繁体   English   中英

Nodejs测试不会在Promise中出错

[英]Nodejs Test not erroring out inside Promise

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

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

这是我的测试的样子。 我怎样才能让这时候测试失败valid是不是true 这个测试是用jest运行的。 我附上了测试通过的截图(当它失败时)。 在此输入图像描述

const request = require('supertest');
const { verifyJsonResponse } = require('../verifiers/verifiers');

const Ajv = require('ajv');
const ajv = new Ajv({allErrors: true});
const assert = require('assert');

const baseURL = 'myAPIBaseUrl';
const endPointExtensions = ['myAPIExtension'];
const schema = require('./../pathToJsonSchema/schemaFile.json');

describe('runs remotely specified test cases', () => {
    it('should receive expected response for each parameter group', () => {
        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));
        });
    });
});

出现UnhandledPromiseRejectionWarning ,因为UnhandledPromiseRejectionWarning承诺拒绝。

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

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));
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM