开发者问题收集

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

2017-08-13
14694

在此处输入图片描述

为什么是 object.anonymous

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 <[email protected]>",
    "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个回答

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

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

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

Ignacio
2017-08-14

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

例如: <ComponentX /> ,忘记将 props 传递给这个 ComponentX,而 Jest 找不到expenses 属性的位置,expenses 将未定义,然后 undefined.length 肯定会导致未定义的错误。

我们如何解决这个expenses.length未定义的问题?

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

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

Damon Wu
2019-01-19