繁体   English   中英

Jest - TypeError:无法读取未定义的属性“[object Array]”

[英]Jest - TypeError: Cannot read property '[object Array]' of undefined

我用玩笑编写了一个单元测试,并且在运行它时看到了这个错误。 我在控制台中获得了正确的数据。 我已经查看了这些类似于我的帖子,但仍然不明白为什么会这样:

这是我的测试:

import filterAvailableSlots from './filterAvailableSlots';

/* UNIT TEST */

describe('filterAvailableSlots', () => {
  it('should return an array', async () => {
    const bookedSlots = { '10:30': true, '11:00': true };
    const allSlots = ['9:30', '10:00', '10:30', '11:00', '11:30', '12:00'];
    const availableSlots = filterAvailableSlots([allSlots, bookedSlots]);
    expect(Array.isArray(availableSlots)).toBe(true);
  });
});

这是我的代码:

/**
 * @param {Array} allSlots
 * @param {Object} bookedSlots
 * @return an array of available slots
 */

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

应该过滤时间数组,并删除与 bookedSlots 对象键匹配的任何项目。

带有更多错误细节的图像:

不喜欢我对对象属性的引用

正确的返回值,我通过 console.log 正确看到:

[ '9:30', '10:00', '11:30', '12:00' ] 

一定是我不理解的 Javascript 怪癖。 任何人都知道为什么即使我在控制台中看到了正确的数据,测试还是失败了?

改变

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

const availableSlots = filterAvailableSlots(allSlots, bookedSlots);

此外,函数中的初始let语句没有做任何事情。 我只想写这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM