我正在创建自定义JavaScript库,内容和测试部分由Vite分成两个条目。
// library/vite.config.ts
import { defineConfig } from 'vite'
import path from 'path'
import dts from 'vite-plugin-dts'
export default defineConfig({
build: {
lib: {
entry: {
content: path.resolve(__dirname, `src/index.ts`),
testing: path.resolve(__dirname, `src/testing.ts`),
},
},
rollupOptions: {
external: [
`vitest`,
],
},
},
})
字符串
我想模拟整个库导入并在测试中替换它。
// library/src/testing.ts
import { vi } from 'vitest'
vi.mock(`my-library/content`, async () => { ... })
型
然后,我想使用它只与进口内setup.ts
文件
// application/tests/setup.ts
import 'my-library/testing'
型
问题是,vi.mock()
不工作。
我试图使用vi.mock()
到现有的应用程序部分是工作:
// library/src/testing.ts
import { vi } from 'vitest'
// NOT WORKING
vi.mock(`my-library/content`, async () => { ... })
// WORKING
vi.mock(`application/something`, async () => { ... })
型
我还尝试在应用程序中直接使用vi.mock()
,这也是有效的:
// application/tests/setup.ts
import { vi } from 'vitest'
// WORKING
vi.mock(`my-library/content`, async () => { ... })
型
1条答案
按热度按时间cuxqih211#
解决方法:
我正在使用pnpm workpaces。这个问题与安装的依赖有关。在我将peer dependency添加到package.json中后,它开始工作:
字符串