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