Jest:测试套件运行失败,类型错误:无法读取未定义的属性'bind'

13

我们在React-Native中使用Jest进行单元测试,一直运行良好。但是我们刚刚删除了npm并重新安装后,当我们尝试运行单元测试(npm test)时,我们遇到了以下错误,无法运行测试用例。

图片描述

可能出了什么问题?

8个回答

4

尝试重新安装jest和jest babel的最新版本

npm install --save-dev jest

npm install --save-dev babel-jest regenerator-runtime

然后重新运行测试,这对我有效


2

1

React 17+

  "devDependencies": {
    "@testing-library/dom": "^8.11.1",
    "@testing-library/jest-dom": "^5.16.1",
    "@testing-library/react": "^11.2.7",
    "@testing-library/user-event": "^12.8.3",
    "@types/jest": "^26.0.24",
    "@types/react": "^17.0.27",
    "@types/react-table": "^7.7.7",
    "jest": "26.0.1",
    "ts-jest": "26.0.0",
    "typescript": "^4.5.4"
  }

错误出现在jest 27+版本上,但将其设置为26后,它可以正常工作。


0

我曾经遇到过同样的问题。我先用jest进行了几次测试,然后在另一台机器上使用create-react-app初始化文件夹,并恢复之前的测试。之后,我切换回我的当前机器,运行npm install并运行测试。它给了我这个错误,所以我删除了node_modules并再次运行npm install。现在所有的测试都通过了。


0

我遇到了同样的错误:

Test suite failed to run, TypeError: Cannot read property 'bind' of undefined

和 @Harish_N 类似,但我使用的是 react-scripts

在我的情况下,完全是关于在 package.json 中将测试相关依赖项更新到较新版本。


0

2
虽然这段代码可能解决了问题,但是包括解释它如何以及为什么解决了问题将有助于提高您的帖子质量,并可能导致更多的赞。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。 - Yunnosch

0
如果您在代码中添加了这行代码:
global.requestAnimationFrame = function(callback) {
    setTimeout(callback, 0);
};

在你的 "package.json" 中有一个名为 "shim.js" 或 "setupshim.js" 的文件:

"setupFiles": [
     <rootDir>/__test__/setup/shim.js 
],

删除这个文件。这将有助于在“Jest”单元测试中消除此错误。

对我有用,希望对您也有用。


0
我在使用最新版本的Jest时遇到了相同的错误。最终我意识到我的源代码中存在循环依赖关系。解决了循环依赖问题后,我的测试又可以正常工作了
输出信息非常晦涩,但回想起来,堆栈跟踪给了我需要的线索,让我看到了循环依赖问题。问题发生在dist/index文件上,然后是我的源文件,再然后是src/index文件。以下是一个示例输出的样子:
FAIL  src/smoke.test.jsTest suite failed to run

TypeError: Cannot read properties of undefined (reading 'default')

  259 |   enumerable: true,
  260 |   get: function get() {
> 261 |     return _button["default"];
      |                      ^
  262 |   }
  263 | });
  264 | Object.defineProperty(exports, "Input", {

  at Object.get [as Button] (dist/index.js:261:22)
  at Object.RealButton (src/skeleton/InputSkeletons.js:45:57)
  at Object.require (src/skeleton/index.js:4:1)
  at Object.require (src/index.ts:45:1)
  at Object.require (src/setupTests.js:4:1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接