有一个简单的问题我找不到答案。
使用时:
- 节点 17 + 打字稿
- ESM(package.json 中的“类型”:“模块”)
我可以实现模拟吗仅用于一种功能?或模块?
如果是这样,我可以举个例子吗?
无论你使用什么框架。
thanks!!
包.json:
{
"test": "node --experimental-vm-modules ./node_modules/.bin/jest --bail --colors --coverage --detectOpenHandles --forceExit --verbose",
"jest": {
"preset": "ts-jest/presets/default-esm",
"transform": {
".ts": "ts-jest"
},
"testEnvironment": "node",
"moduleFileExtensions": [
"ts",
"js",
"json"
],
"transformIgnorePatterns": [
"<rootDir>/node_modules/"
],
"globals": {
"ts-jest": {
"useESM": true
}
}
}
}
Jest.spy 给了我一个错误:无法分配给只读属性我也尝试使用 Sinon,结果是:es 模块无法被存根
我建议vitest
.
我刚刚尝试了很多选项,例如 uvu 和 esmock。什么都没起作用。vitest
有适当的文档并且开箱即用。可以随时模拟来自不同 ESM 模块的功能(提升)。它就是有效的。
一开始我不想使用商业项目的产品。但所有其他选项都有效。
vitest
语法与 jest 中的语法完全相同。
import { ALL_EMB_TYPES } from "./db.js"
vi.mock("./db.js", async () => {
let actual = await vi.importActual("./db.js") as any
return {
...actual,
store: vi.fn(),
}
})
// ALL_EMB_TYPES retained from original implementation
// store mocked
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)