每次测试都使用 EBUSY 进行 Jest 锁定

Tim*_*m L 5 npm typescript angular ts-jest

总结一下问题

每当在 Jest 中为 Angular 项目运行测试时,我都会遇到以下问题:

EBUSY: resource busy or locked, open 'C:\Users\<username>\AppData\Local\Temp\jest\ts-jest\1b\56fbb16412d9bba7787f9ba7186e4b9972adfb\e9a8ee471bc676fe755c57379268f21a1390a7a4

    > 1 | import 'jest-preset-angular/setup-jest';
        | ^
      2 |

      at NgJestTransformer.TsJestTransformer.getCacheKey (../../node_modules/ts-jest/dist/legacy/ts-jest-transformer.js:341:40)
      at Object.<anonymous> (../../node_modules/rxjs/dist/cjs/index.js:33:14)
      at Object.<anonymous> (../../node_modules/@angular/core/fesm2015/core.mjs:7:69)
      at Object.<anonymous> (../../node_modules/@angular/core/fesm2015/testing.mjs:7:1159)
      at Object.<anonymous> (../../node_modules/jest-preset-angular/setup-jest.mjs:2:28)
      at Object.<anonymous> (src/setup-jest.ts:1:1)
Run Code Online (Sandbox Code Playgroud)

...通过命令运行:nx run <project>:test

这些工作一直持续到周一。

如果我运行以下任一命令,测试就会运行:

  • 骑手中的单独测试/测试套件
  • 终端中的单个测试套件通过:nx run <project>:test --project=<project> --testFile=src/app/services/plotly-layout.service.spec.ts

描述一下你已经尝试过的事情

我发现这些 EBUSY 问题相当多,但通常是以下其中一项有效:

  • 关闭我正在使用的终端
  • 结束骑手
  • 重新启动我的电脑

这些都不起作用。

鉴于锁定在Temp文件夹上,我尝试删除整个Temp/jest文件夹,但它只是重新生成56fbb16412d9bba7787f9ba7186e4b9972adfb\e9a8ee471bc676fe755c57379268f21a1390a7a4文件并在下一次测试运行时立即锁定。

以前有人遇到过这个吗?我的假设是,这jest是在不应该的地方并行化测试套件,但我不知道为什么它会突然开始。