使用 IntelliJ 在 NX 工作区中运行 Jest 测试时出现“错误:未找到预设 jest.preset.js”

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

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

运行项目:测试生成器时,我的笑话测试按预期工作。 但是,当尝试直接通过 IDE (IntelliJ) 运行单元测试时,出现以下错误:

Error: ● Validation Error:

  Preset jest.preset.js not found.

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

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

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'
};

预设文件退出,如下所示:

const nxPreset = require('@nrwl/jest/preset');

module.exports = { ...nxPreset };

我还有一个全局

jest.config.ts
文件。 该文件确实引用了
jest.preset.js
,但它不存在于其范围内。 此外,不存在全局范围的
test-setup.ts
文件。 如下图:

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 测试)。

任何有关如何纠正此问题的想法将不胜感激。

angular jestjs ts-jest
1个回答
0
投票

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

enter image description here

我收到错误

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

例如

  • 我的测试文件位于
    src/app/my-app/A/B/C
  • 我的
    jest.preset.ts
    文件位于
    src
  • 错误是
    Preset ../../jest.preset.ts not found
  • 将工作目录设置为
    src/app/my-app
    (因此测试运行程序将“进入”
    src
    文件夹)

enter image description here

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