Dim*_*mov 5 dependencies mocking vite vitest
我有一个带有 vite 的测试设置,并且有一个依赖项的依赖项,需要一些模拟选项才能正常运行,我目前将它放在一个__mocks__/nestedDependency.js
文件中。另外在我的test/setup.ts
文件中我有一个vi.mock('nestedDependency')
,但它似乎没有以任何方式捕获它
我之前有过这样的设置,jest
并且这个设置有效。我从该设置迁移的唯一一件事是jest.requireActual('nestedDependency')
我现在vi.importActual('nestedDependency')
用于模拟目的而不是使用。
我遇到了同样的问题,我的解决方案可能会帮助你。我在 monorepo 中。顶级包是panel
which 需要state
和common
。state
还需要common
. 我需要common
嘲笑它是相同的,即使它嵌套在state
.
我意识到,当我运行 的测试时panel
,state
将通过它的捆绑包进行访问,该捆绑包使用require
调用,vitest
不会模拟。
我更新了我的测试配置以使用alias
// the source code only uses import
const unbundledState = resolve(__dirname, '../state/src/index');
export default defineConfig({
test: {
environment: 'jsdom',
setupFiles: ['./tests/test.setup'],
globalSetup: ['./tests/test.global'],
alias: {
'@cai/state': unbundledState,
},
},
});
Run Code Online (Sandbox Code Playgroud)
这使得vitest
贯穿import
陈述而不是require
陈述,因此事情被嘲笑。因此,如果嵌套依赖项import
在捆绑之前恰好使用,我的解决方案就有效。
这让我想如果不是的话,像proxyquire这样的东西也可以为你工作。
归档时间: |
|
查看次数: |
592 次 |
最近记录: |