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

amrnrhlw  于 6个月前  发布在  Jest
关注(0)|答案(1)|浏览(53)

我正在创建自定义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 () => { ... })

cuxqih21

cuxqih211#

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

my-library/package.json

{
  ...
  "peerDependencies": {
    "my-library": "workspace:*"
  },
  ...
}

字符串

相关问题