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

Jest测试报TypeError:无法读取undefined的'[object Array]'属性

TypeError: Cannot read property '[object Array]' of undefined in Jest Test for Slot Filter Function

哈哈,这个问题其实一眼就能揪出来——你在测试里给函数传参的方式搞错啦!

咱们先看你的业务函数定义:

export default function filterAvailableSlots(allSlots, bookedSlots) {
  let availableSlots = [];
  availableSlots = allSlots.filter((item) => !bookedSlots[item]);
  return availableSlots;
}

它明确接受两个独立参数:第一个是时间数组allSlots,第二个是已预订时段的对象bookedSlots。

但你在测试里是这么传参的:

const availableSlots = filterAvailableSlots([allSlots, bookedSlots]);

你把两个参数打包成了一个数组传进去!这就导致函数内部的变量完全乱了:

  • allSlots 变成了你传入的那个数组:[['9:30', '10:00', ...], {'10:30': true, ...}]
  • bookedSlots 因为没收到第二个参数,直接变成了undefined

当执行allSlots.filter((item) => !bookedSlots[item])时,item此时是数组里的第一个元素(也就是原allSlots数组),转成字符串就是[object Array],而bookedSlots是undefined,你试图访问undefined的[object Array]属性,自然就抛出了那个错误。

修复方法

把测试里的传参改成直接传递两个独立参数就行:

const availableSlots = filterAvailableSlots(allSlots, bookedSlots);

这样函数就能正确接收两个参数,执行过滤逻辑,你的测试也能顺利通过啦——毕竟你说控制台已经能输出正确结果,说明业务函数本身的逻辑是没问题的,只是测试传参的小失误~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 08:12:42