首页 > 解决方案 > NodeJS - 在拒绝承诺期间 JSON 中缺少键

问题描述

我正在尝试为我的函数创建一个单元测试,我遇到了从拒绝承诺的 JSON 正文中读取数据的问题。

在我的功能内部:

`return new Promise((resolve, reject) => {
               .....
                return reject({
                    'code': ID_NOT_VALID,
                    'message': 'Required header has invalid value'
                })`

在我的测试中,我接下来要做的是:

 const errJson = {
        code: ID_NOT_VALID,
        message: 'Required header has invalid value'
    };
......

it('should not be empty', async () => {
        return assert.isRejected(validate.validateCorrelationId(), errJson, errJson);
    });

结果,我发现由于某种原因响应只包含“消息”参数,而不是“代码”,而不是 JSON 格式。

AssertionError: expected promise to be rejected with an error including { Object (code, message) } but got 'Required header has invalid value'

看起来由于某种原因,除了“消息”之外,任何其他键都被忽略了。我究竟做错了什么?作为 Promise 拒绝的一部分,如何返回和验证 JSON?

完整代码如下:

  1. 功能:
exports.validate = (strId) => {
  return new Promise((resolve, reject) => {
    if (!strId) {
        return reject({
            'code': constants.ID_NOT_VALID,
            'message': 'Required header is not present in request'
        });...........
  1. 测试:

const chai = require('chai');

    const chaiAsPromised = require("chai-as-promised");
     const expect = chai.expect;
     const assert = chai.assert;
     chai.use(chaiAsPromised);
describe('validate', () => {
const errJson = {
    'code': constants.ID_NOT_VALID,
    'message':'Required header has invalid value'
};

it('should not be empty', async () => {
    return assert.isRejected(validate.validateCorrelationId(), errJson, errJson);
});......

// 下一个测试工作:

it('should be valid ID', async () => {
        const result = await validate.validate('352d-11e8');
        expect(result).to.equal('352d-11e8');
    });

标签: jsonnode.jspromisemocha.jsassert

解决方案


推荐阅读