Jest.js 在安装文件中使用库中的vi.mock()

amrnrhlw  于 2024-01-04  发布在  Jest
关注(0)|答案(1)|浏览(149)

我正在创建自定义JavaScript库,内容和测试部分由Vite分成两个条目。

  1. // library/vite.config.ts
  2. import { defineConfig } from 'vite'
  3. import path from 'path'
  4. import dts from 'vite-plugin-dts'
  5. export default defineConfig({
  6. build: {
  7. lib: {
  8. entry: {
  9. content: path.resolve(__dirname, `src/index.ts`),
  10. testing: path.resolve(__dirname, `src/testing.ts`),
  11. },
  12. },
  13. rollupOptions: {
  14. external: [
  15. `vitest`,
  16. ],
  17. },
  18. },
  19. })

字符串
我想模拟整个库导入并在测试中替换它。

  1. // library/src/testing.ts
  2. import { vi } from 'vitest'
  3. vi.mock(`my-library/content`, async () => { ... })


然后,我想使用它只与进口内setup.ts文件

  1. // application/tests/setup.ts
  2. import 'my-library/testing'


问题是,vi.mock()不工作。
我试图使用vi.mock()到现有的应用程序部分是工作:

  1. // library/src/testing.ts
  2. import { vi } from 'vitest'
  3. // NOT WORKING
  4. vi.mock(`my-library/content`, async () => { ... })
  5. // WORKING
  6. vi.mock(`application/something`, async () => { ... })


我还尝试在应用程序中直接使用vi.mock(),这也是有效的:

  1. // application/tests/setup.ts
  2. import { vi } from 'vitest'
  3. // WORKING
  4. vi.mock(`my-library/content`, async () => { ... })

cuxqih21

cuxqih211#

解决方法:
我正在使用pnpm workpaces。这个问题与安装的依赖有关。在我将peer dependency添加到package.json中后,它开始工作:

  1. my-library/package.json
  2. {
  3. ...
  4. "peerDependencies": {
  5. "my-library": "workspace:*"
  6. },
  7. ...
  8. }

字符串

相关问题