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

React单元测试报错TypeError: data.filter is not a function求助

报错原因与修复方案

根因分析

TypeError: data.filter is not a function 报错的核心原因是:.filter() 是JavaScript数组的专属实例方法,你调用该方法的data变量当前不属于数组类型,通常是undefined、null、普通对象或其他非数组类型的值。

现存问题定位

从你提供的单元测试代码可以看到,你mock的spaceDonation下的history字段被设置为了普通对象{}:

// 测试代码里的错误mock写法
spaceDonation: {
    history: {}, 
    cId: '11',
} 

如果你的业务代码中是对history字段调用.filter()方法,就会直接触发该报错。

修复步骤

  • 第一步:先在业务代码调用.filter()的位置前加类型校验,确认变量类型,示例:
console.log('当前data类型:', typeof data, '是否为数组:', Array.isArray(data))
  • 第二步:修正单元测试的mock数据,把需要调用.filter()的字段改为数组类型,比如如果是history字段需要筛选,就修改为:
spaceDonation: {
    history: [], // 空数组或者填充对应测试数据的数组
    cId: '11',
}
  • 第三步:业务代码增加防御性逻辑,避免非预期类型传入导致崩溃,示例:
// 先判断是否为数组,非数组默认转为空数组再调用filter
const filterResult = (Array.isArray(data) ? data : []).filter(/* 你的筛选逻辑 */)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:06:06