首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角14和Jest (不能运行测试)

角14和Jest (不能运行测试)
EN

Stack Overflow用户
提问于 2022-07-11 10:39:13
回答 4查看 2.7K关注 0票数 4

我正在将项目中的角版本升级到14。但是当我试图运行单元测试时,我得到了所有这些测试的相同错误:

代码语言:javascript
复制
  ● Test suite failed to run

    Cannot find module '@angular/core/testing' from 'node_modules/jest-preset-angular/build/config/setup-jest.js'

    Require stack:
      node_modules/jest-preset-angular/build/config/setup-jest.js
      node_modules/jest-preset-angular/setup-jest.js
      setupJest.ts

这是当前的jest配置:

jest.config.js

代码语言:javascript
复制
/** @type {import('@jest/types').Config.InitialOptions} */
const config = {
  preset: 'jest-preset-angular',
  setupFilesAfterEnv: ['<rootDir>/setupJest.ts'],
  testPathIgnorePatterns: [
    '<rootDir>/node_modules/',
    '<rootDir>/dist/'
  ],
  moduleNameMapper: {
    "lodash-es": "lodash",
  },
  globals: {
    'ts-jest': {
      tsconfig: '<rootDir>/tsconfig.spec.json',
      stringifyContentPathRegex: '\\.html$',
      diagnostics: {
        ignoreCodes: [151001]
      }
    }
  },
  restoreMocks: true,
  clearMocks: true
}

module.exports = config;

setupJest.ts

代码语言:javascript
复制
import 'jest-preset-angular/setup-jest';
EN

回答 4

Stack Overflow用户

发布于 2022-07-14 01:56:43

因此,我在网上搜索了相当一段时间,然后我发现了这个解决方案,希望它也适用于你。

在jest.config.js文件中,如果您正在使用moduleDirectories配置,则将其从moduleDirectories:‘node_node’、./‘改为moduleDirectories:’node_node‘、__dirname

票数 3
EN

Stack Overflow用户

发布于 2022-08-08 21:30:29

我无法用fadingbear提供的解决方案来解决这个问题,但它激励我改变。/“to”。因此,在将jest、jest预设的角度和角度更新到最新版本之后,我用moduleDirectories来修正这个问题:'node_modules','<rootDir>',在我的jest.config.js中,而不是‘node_jest.config.js’,‘/’。

我还必须添加transformIgnorePatterns条目,以消除任何意外的令牌错误,如jest-预设角文档:https://thymikee.github.io/jest-preset-angular/docs/guides/troubleshooting中的故障排除部分所描述的。

这是我现在的jest.config.js

代码语言:javascript
复制
// 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/',
};
票数 1
EN

Stack Overflow用户

发布于 2022-07-15 13:07:52

当我有这种类型的错误时,我通常会在package.json中为Jest配置添加必需的路径:

代码语言:javascript
复制
"modulePaths": [
 "<rootDir>",
 "/path/to/required"
],

但是,这种方法更适合于需要路径为(例如src/app/ )的情况。

对于node_modules,我通过将"transformIgnorePatterns": ["/node_modules/?!@angular"],添加到package.json Jest配置来解决这个问题。

另外,我建议您从根文件夹中点击npm install。以防万一:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72937259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档