Node.js测试断言空对象失败:如何验证API返回的空对象?
问题分析与解决
核心原因
你搞错了断言的比对对象:
- 接口返回的
request.body.result是空对象{} - 你的
MOCK_RESPONSE是嵌套结构{ result: {} }
直接拿这两个做相等校验,本质是在比较{}和{ result: {} },二者结构完全不同,测试自然失败。
解决方法
根据你的测试目标选对应的断言方式:
目标1:验证整个响应体和MOCK_RESPONSE一致
直接用接口返回的完整响应体(request.body)和MOCK_RESPONSE比对:
// 示例(以Jest为例) expect(request.body).toEqual(MOCK_RESPONSE);
目标2:仅验证result字段是空对象
直接断言request.body.result为空对象即可:
// 方式1:直接比对空对象 expect(request.body.result).toEqual({}); // 方式2:更严谨地验证空对象(避免框架对空对象的特殊判断) expect(Object.keys(request.body.result)).toHaveLength(0);
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

