[英]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.