首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jest.preset.js在NX中运行Jest测试时,“错误:预置jest.preset.js未找到”

使用jest.preset.js在NX中运行Jest测试时,“错误:预置jest.preset.js未找到”
EN

Stack Overflow用户
提问于 2022-05-02 01:58:40
回答 1查看 1.7K关注 0票数 3

我有一个带有节点+角度库的NX工作区。当从NX版本13.x升级到14.x时,NX通过其自动迁移过程重新配置Jest。

当运行项目:测试生成器时,我的jest测试就像预期的那样工作。但是,当试图通过IDE (IntelliJ)直接运行单元测试时,我会得到以下错误:

代码语言:javascript
复制
Error: ● Validation Error:

  Preset jest.preset.js not found.

  Configuration Documentation:
  https://jestjs.io/docs/configuration

项目是使用项目级配置文件设置的,如下所示。

代码语言:javascript
复制
module.exports = {
   coverageDirectory: '<path>',
   displayName      : '<name>',
   globals          : {
      'ts-jest': {
         stringifyContentPathRegex: '\\.(html|svg)$',
         tsconfig                 : '<rootDir>/tsconfig.spec.json'
      }
   },

   setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],

   snapshotSerializers    : [
      'jest-preset-angular/build/serializers/no-ng-attributes',
      'jest-preset-angular/build/serializers/ng-snapshot',
      'jest-preset-angular/build/serializers/html-comment'
   ],
   transform              : {
      '^.+.(ts|mjs|js|html)$': 'jest-preset-angular'
   },
   transformIgnorePatterns: ['node_modules/(?!.*.mjs$)'],
   preset                 : '../../../../../jest.preset.ts'
};

预设的文件退出,看起来如下所示:

代码语言:javascript
复制
const nxPreset = require('@nrwl/jest/preset');

module.exports = { ...nxPreset };

我还有一个全局jest.config.ts文件。该文件确实有一个对jest.preset.js的引用,该引用在其范围内不存在。此外,不存在的是一个全局范围的test-setup.ts文件。如下所示:

代码语言:javascript
复制
const { getJestProjects } = require('@nrwl/jest');

module.exports = {
  globals: {
    'ts-jest': {
      astTransformers: {
        before: [
          'jest-preset-angular/build/InlineFilesTransformer',
          'jest-preset-angular/build/StripStylesTransformer'
        ]
      },
      stringifyContentPathRegex: '\\.(html|svg)$',
      tsconfig: '<rootDir>/tsconfig.spec.json'
    }
  },
  preset             : 'jest.preset.js',
  setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
  snapshotSerializers: [
    'jest-preset-angular/build/serializers/no-ng-attributes',
    'jest-preset-angular/build/serializers/ng-snapshot',
    'jest-preset-angular/build/serializers/html-comment'
  ],
  projects: [
    ...getJestProjects(),
    //Lots of projects
  ]
};

我认为迁移中有一些不正常的地方,但我不太了解jest的配置,不知道如何解构这些配置。全局配置文件中存在多个问题,但是当我消除全局配置文件时,我会得到许多其他错误(就像它试图在js中运行我的ts测试一样)。

任何关于我如何纠正这个问题的想法都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-07-05 17:19:35

我能够通过调整测试配置中的“工作目录”来解决这个问题。

我得到了错误的Preset ../../jest.preset.ts not found,所以我在我的项目中找到了jest.preset.ts文件,并将我的配置的工作目录设置为“在该文件下面”两个文件夹。

例如。

我的测试文件在src/app/my-app/A/B/C

  • My中,是在src

  • The中,错误是Preset ../../jest.preset.ts not found

  • Set,工作目录到src/app/my-app (所以测试运行程序将“升级”到src文件夹)

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

https://stackoverflow.com/questions/72081693

复制
相关文章

相似问题

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