Javascript Jest:TypeError:无法读取属性';长度';未定义的

Javascript Jest:TypeError:无法读取属性';长度';未定义的,javascript,unit-testing,jestjs,Javascript,Unit Testing,Jestjs,为什么它是匿名的 package.json: package.json: { “名称”:“SmartConverter”, “版本”:“1.0.0”, “main”:“/src/js/main.js”, “脚本”:{ “测试”:“玩笑——覆盖范围”, “构建”:“webpack--config./scripts/*/webpack.config.js” }, “存储库”:https://github.com/raushankumarnitdgp/SmartConverter.git", “作者

为什么它是匿名的

package.json:

package.json:
{
“名称”:“SmartConverter”,
“版本”:“1.0.0”,
“main”:“/src/js/main.js”,
“脚本”:{
“测试”:“玩笑——覆盖范围”,
“构建”:“webpack--config./scripts/*/webpack.config.js”
},
“存储库”:https://github.com/raushankumarnitdgp/SmartConverter.git",
“作者”:“raushankumarnitdgp”,
“许可证”:“麻省理工学院”,
“依赖项”:{
“巴别塔cli”:“^6.24.1”,
“巴别塔核心”:“^6.25.0”,
“巴别塔笑话”:“^20.0.3”,
“巴别塔加载器”:“^7.1.1”,
“babel-preset-es2015”:“^6.24.1”,
“eslint”:“^4.4.1”,
“笑话”:“^20.0.4”,
“jest cli”:“^20.0.4”,
“再生器运行时”:“^0.10.5”,
“网页包”:“^3.5.2”
}

}
您在error stracktrace中看到的
anonymous
关键字只是告诉您错误发生在匿名函数中。匿名函数是没有名称的函数,通常用作回调,但并不总是这样。例如:

function main() {
  myLibrary.doSomething('foo', function() {
    console.log('I have finished')
  })
}

传递给myLibrary.doSomething的函数是匿名函数。您看到的错误似乎发生在
phone.js
文件的第20行。检查您在哪里使用
.length

我认为可能是一些道具尚未设置,例如,如果您在ComponentX中有一个名为expenses的属性,但在jest文件中,您没有预先设置此expenses属性

例如:
,忘记将道具传递到此ComponentX,Jest无法找到expenses属性的位置,expenses将未定义,然后未定义。length肯定会导致未定义的错误

我们如何解决这个费用。长度未定义的问题

我们可以这样做:

现在,expenses.length不应该是未定义的,因为expenses有一些数据