json - 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?
完整代码如下:
- 功能:
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'); });
解决方案
推荐阅读
- gcc - ___chkstk_ms gfortran 中的错误:分段错误,无法访问地址错误的内存
- google-sheets - 在单行中搜索多个匹配项
- java - 如何使用 Retrofit 获取 ArrayList 中的最后一个元素
- flutter - 如何从 Dart 中的流中调用流
- c++ - 使用工厂模式的单例实现
- c++ - 在 FUNCTION const 中调用运算符时出错
- firebase - 使用 Google Cloud Function Promise 更改 HTTP 状态代码
- swift - 带有自定义初始化的 SwiftUI 视图
- php - 如何在 if(isset) 语句中使用 PHP 获取 URL 参数以更新表单
- php - Laravel 将数据传递到视图中