有一个简单的问题我找不到答案。 使用时:
我可以只为一个函数实现mock吗?还是模块?
如果是这样,我可以举个例子吗? 无论您使用什么框架。
谢谢!!
package.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
语法与笑话中的完全相同。
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