【问题标题】:Vitest Mock for path.join in __Mocks__ folder__Mocks__ 文件夹中 path.join 的 Vitest Mock
【发布时间】:2023-02-12 02:25:53
【问题描述】:

我想将路径的模拟实现(特别是“加入”)转换为名为 path.js 的文件中的 __mocks__ 文件夹

目前我的 io.test.js 文件中有这个并且它有效:

vi.mock("path", () => {
  return {
    default: {
      join: (...args) => {
        return args[args.length - 1];
      },
    },
  };
});

我将如何在 __mocks__\path.js 文件中执行此操作?

【问题讨论】:

    标签: javascript mocking vitest


    【解决方案1】:

    Vitest 通常会在项目根文件夹下的__mocks__ 文件夹中查找与模拟文件同名的模拟文件。但是我发现这有点问题,因为一方面有一个像这样的额外根文件夹,而不是例如 test 文件夹下的一个可能不是每个人都想要的(丑陋?),但更重要的是有时名称原始进口不是微不足道的猜测,例如对于来自node_modules 的模块,大多数时候导入路径可能不是真正的文件名,所以__mocks__ 下的文件应该叫什么可能会变成乏味的猜谜游戏......

    相反,可以使用此语法从任何位置使用基于文件的模拟:

    // The test file
    
    vi.mock('path', async () =>
      await vi.importActual('another/path/to/the/mock.js')
    )
    
    // another/path/to/the/mock.js
    
    export default {
      join: (...args) => {
        return args[args.length - 1];
      },
    }
    

    像这样设置后,您可以将模拟文件放在任何您想要的地方。

    请注意,__mocks__ 根目录下的模拟会被 Vitest 自动获取,因此对这些手动模拟使用相同的文件夹可能会导致混淆。我建议将它们放在另一个文件夹下。对我来说test/vitest/mocks 或类似的似乎更合乎逻辑。

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 2022-12-14
      • 2022-07-18
      • 2022-07-01
      • 1970-01-01
      • 2023-02-05
      • 2022-10-25
      • 2023-03-11
      • 2018-04-28
      相关资源
      最近更新 更多