Jest:TypeError:无法读取未定义的属性“length”

时间:2017-08-13 19:15:26

标签: javascript unit-testing jestjs

enter image description here

为什么反对。匿名

的package.json:

package.json:
{
    "name": "SmartConverter",
    "version": "1.0.0",
    "main": "./src/js/main.js",
    "scripts": {
        "test": "jest --coverage",
        "build": "webpack --config ./scripts/*/webpack.config.js"
    },
    "repository": "https://github.com/raushankumarnitdgp/SmartConverter.git",
    "author": "raushankumarnitdgp <raushankumar.nitdgp@gmail.com>",
    "license": "MIT",
    "dependencies": {
        "babel-cli": "^6.24.1",
        "babel-core": "^6.25.0",
        "babel-jest": "^20.0.3",
        "babel-loader": "^7.1.1",
        "babel-preset-es2015": "^6.24.1",
        "eslint": "^4.4.1",
        "jest": "^20.0.4",
        "jest-cli": "^20.0.4",
        "regenerator-runtime": "^0.10.5",
        "webpack": "^3.5.2"
    }
}

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

例如:<ComponentX />,忘记将道具传递到此ComponentX中,而Jest找不到支出属性的位置,支出将是不确定的,然后是不确定的。长度肯定会导致该不确定的错误。

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

我们可以这样做:<ComponentX expenses={mockExpenses} />

现在,expenses.length不应不确定,因为支出包含一些数据。