NodeJS - отсутствует ключ в JSON при отклонении обещаний - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь создать модульные тесты для своей функции. Я столкнулся с проблемой чтения данных из тела 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'

Похоже, по какой-то причине ЛЮБОЙ другой ключ игнорируется, кроме "сообщения". Что я делаю неправильно? Как вернуть и проверить JSON как часть отказа от Promise?

Полный код ниже:

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