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 中。顶级包是panelwhich 需要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 次 |
| 最近记录: |