Jest 28:createJestExpect - TypeError:无法读取未定义的属性(读取“扩展”)

问题描述 投票:0回答:3

我从 Jest 27 迁移到 28。如果我现在尝试开始测试,我只会收到此错误:

  ● Test suite failed to run

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

      at createJestExpect (node_modules/@jest/expect/build/index.js:35:19)
      at Object.<anonymous> (node_modules/@jest/expect/build/index.js:47:20)
      at TestScheduler.scheduleTests (node_modules/@jest/core/build/TestScheduler.js:317:13)
      at runJest (node_modules/@jest/core/build/runJest.js:407:19)
      at _run10000 (node_modules/@jest/core/build/cli/index.js:338:7)
      at runCLI (node_modules/@jest/core/build/cli/index.js:190:3)

Test Suites: 1 failed, 1 total

我什至无法调试我的测试,因为内部测试设置已经失败。任何线索,出了什么问题吗?

jestjs
3个回答
55
投票

这是当 moduleDirectories 选项包含

"."
时出现的错误(请参阅
此处
)。

要解决此问题,请将

"."
更改为
"<rootDir>"

moduleDirectories: ["node_modules", "<rootDir>"]

或者,如果您使用

jest.config.js
文件,则可以将
"."
更改为
__dirname

module.exports = {
  moduleDirectories: ["node_modules", __dirname]
};

1
投票

我在使用 Angular 和 jest 时遇到了类似的错误。将 jest 和 Angular 依赖项更新到最新版本后,我以与 @Lupina 略有不同的方式修复了此错误,但使用

<rootDir>
而不是
__dirname
。这是我当前的 jest.config.js

jest.config.js
module.exports = {
  preset: 'jest-preset-angular',
  setupFilesAfterEnv: ['<rootDir>/setup-jest.ts'],
  globalSetup: 'jest-preset-angular/global-setup',
  moduleDirectories: ['node_modules', '<rootDir>'],
  transformIgnorePatterns: ['node_modules/(?!@angular|rxjs)'],
  collectCoverage: true,
  coverageDirectory: '<rootDir>/coverage/',
};

0
投票

如果它对某人有帮助,我从不同的 Lerna 包循环导入文件导致了这个问题,那么删除它就可以解决我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.