TypeError: Cannot read property 'forEach' of undefined jest

TypeError: Cannot read property 'forEach' of undefined jest

我在使用 jest 的测试套件 运行 中遇到了这个错误,尽管它在 react 编译时正常工作。 请查看下面的错误和代码截图。

您正在测试 !== null,但您的 data 没有 属性 tags(并且 react/typescript 不知道这一点)。所以你的 data.tags 被评估为 undefined.

if(data.tags !== null && data.tags !== undefined) {

if(data.tags) {

会起作用。

当你遇到 of undefined 问题时,总是向左看,所以在这里你无法读取 forEach of undefined... 即没有 forEach 属性 on undefined... undefined 如 Javascript undefined.

那么 forEach 调用的是什么 - 标签。所以数据上没有标签 属性,也就是 未定义 。您最好使用类似的东西;

if (data.tags) {
   data.tags.forEach((tag: Tag) => {
     tags.push({ label: tag.label, value: tag.value})
   }
}

if (data.tags) 将检查 null、undefined 和 false。

您可以使用条件链接来检查 data.tags 是否不无效以及标签 属性 上是否存在 forEach 方法以避免错误。但请确保您传递的数据正确。

const tags:any = [];

data.tags?.forEach?.((tag: Tag) => {
 tags.push({ label: tag.label, value: tag.value})
}