You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sinon stub实践:mock返回对象数组的函数解决解构赋值报错

报错根因

你当前给fakeRows.rows定义的是Sinon stub函数,需要主动调用rows()才会返回目标数组,但业务代码中是直接读取results.rows[0],将rows作为普通数组使用,不会触发stub调用,因此results.rows[0]读取结果为undefined,触发属性解构报错。

修正方案

1. 调整fakeRows定义

直接将rows字段赋值为目标数组即可,无需封装为stub函数:

const rowData = {
  count: 1,
  timestamp: ''
};
// 此处rows直接赋值数组,和业务代码的读取逻辑对齐
const fakeRows = {
  rows: [rowData]
};

同时注意变量声明顺序,需先定义fakeRows再将其传入client.query的resolves配置中:

const fakeClient = {
  query: sinon.stub().resolves(fakeRows)
};

2. 补充关联逻辑打桩校验

若需验证参数调用逻辑,可同步完善query.toParam()的打桩定义,确保参数传递符合预期:

// 示例:如果query是其他模块导出的对象,可按如下方式打桩
const query = {
  toParam: sinon.stub().returns({
    // 填充你实际的查询参数结构
  })
};

内容的提问来源于stack exchange,提问作者Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:15:08