我正在運行一個帶有大量代碼的 NestJS api,一切都運行良好,并且幾乎完全覆寫了各種不同的模擬代碼。
在嘗試為新模塊的提供者實施測驗時,我收到了以下錯誤提示:
Cannot find module 'jest-util'
Require stack:
- /node_modules/jest-runtime/build/index.js
- /node_modules/@jest/core/build/cli/index.js
- /node_modules/@jest/core/build/jest.js
- /node_modules/jest-cli/build/cli/index.js
- /node_modules/jest-cli/bin/jest.js
- /node_modules/jest/bin/jest.js
at Function.Module._resolveFilename (../node:internal/modules/cjs/loader:933:15)
at Function.Module._load (../node:internal/modules/cjs/loader:778:27)
at Module.require (../node:internal/modules/cjs/loader:999:19)
at require (../node:internal/modules/cjs/helpers:102:18)
我設法隔離了導致這種行為的原因,它是下面的這段代碼:
jest.mock("fs", () => ({
promises: {
writeFile: jest.fn().mockResolvedValue(undefined),
readFile: jest.fn().mockResolvedValue(Buffer.from('test')),
unlink: jest.fn().mockResolvedValue(undefined),
},
}));
Jest 函式在此陳述句下方和上方的其余代碼中都被使用,所以這對我來說有點沒有意義。
我希望有些人會想看到 package.json 上的笑話部分,所以我在下面添加了它,但我不認為這就是問題所在,因為它在 1000 多個不同的測驗中作業,都非常相似這個。
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": "src",
"testRegex": ".spec.ts$",
"transform": {
"^. \\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"coverageReporters": [
"json-summary",
"json",
"html"
],
"testEnvironment": "node",
"setupFiles": [
"<rootDir>/test/config/envMock.ts"
]
},
開玩笑的版本是 25.1.0
有人知道發生了什么嗎?
uj5u.com熱心網友回復:
我在測驗模塊的塊上restoreAllMocks已經存在之后添加了一個,錯誤就消失了。clearAllMocksbeforeEach
雖然不知道具體原因。我想這可能與代碼中某些點的模擬狀態有關,但我真的不知道。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/461183.html
