You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular-Jest首次单单元测试耗时过长问题求助

关于Angular Jest单元测试清除缓存后运行极慢的问题

我是Angular Jest单元测试新手,已完成项目配置。每次执行--clearCache后,运行简单单元测试耗时500-1500秒,但首次运行后仅需30秒,这个问题在流水线环境中造成严重困扰。我排查过Jest旧版本相关问题,调整配置后仍未解决。以下是相关测试代码及配置信息:

单元测试代码

describe('LoginPage', () => {
  let component: any;
  let harness: RouterTestingHarness;
  beforeEach(async () => {
    await TestBed.configureTestingModule({
      declarations: [SigninComponent, ToastComponent, InputComponent],
      imports: [CommonModule,BrowserAnimationsModule, RouterTestingModule,MyCommonLibModule FormsModule],
      providers: [
        provideRouter([{
          path: 'auth/signin',
          component: SigninComponent
        }]), Router,
        { provide: AuthenticationService, useValue: { CognitoUserpoolLogin: jest.fn() } },
        { provide: AuthIntegrationService, useValue: { triggerEventOnLogin: jest.fn() } },
        { provide: ActivatedRoute, useValue: { params: of({ page: '' }), } }

      ],
    }).compileComponents();
    harness =  await RouterTestingHarness.create();
    component = await harness.navigateByUrl('auth/signin');
  });
  it('should create the app', async() => {
    expect(component).toBeInstanceOf(SigninComponent);
  });
})

依赖版本(package.json)

"@angular/core": "^16.2.0",
"jest": "^29.7.0",
"jest-preset-angular": "^14.0.0",
"@types/jest": "^29.5.11",
"ts-node": "^10.9.2",
"tslib": "^2.3.0",

tsconfig.spec.ts配置

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": [
      "jest" // 1
    ],
    "esModuleInterop": true, // 2
    "emitDecoratorMetadata": true // 3
  },
  "files": [
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]
}

Jest配置

const esModules = ['ngx-otp-input','@angular', '@ngrx', "@mylib/my-common-lib", "@aws-amplify", "@aws-sdk", "ngx-cookie-service", "ngx-spinner", "primeng"];

const config: Config = {
modulePaths: ["<rootDir>"],
clearMocks: true,
collectCoverage: true,
coverageDirectory: "coverage",
coverageProvider: "v8",
moduleDirectories: [
    "node_modules"
  ],
preset: 'jest-preset-angular',
setupFilesAfterEnv: ['<rootDir>/setup-jest.ts'],
testEnvironment: "jsdom",
transformIgnorePatterns: [
    `<rootDir>/node_modules/(?!${esModules.join('|')})`
  ],
}

内容的提问来源于stack exchange,提问作者Rajesh Patra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 12:52:38