NodeJS 我怎么能用path.win32来模拟路径呢?

dly7yett  于 2022-12-12  发布在  Node.js
关注(0)|答案(1)|浏览(125)

我希望我的测试套件能够像在Windows平台上一样工作。不幸的是,很多依赖项都使用path模块。我想用path.win32实现来模拟它。然而,这种方法不起作用:

const winPath = require("path").win32;
jest.mock("path", () => winPath);

引用错误:在初始化之前无法访问“winPath”
正确的做法是什么?

qni6mghb

qni6mghb1#

jest.mock()应该可以工作。下面的示例显示了如何模拟win32.normalize()方法。

const winPath = require("path").win32;

jest.mock('path', () => {
  return {
    ...(jest.requireActual('path') as typeof import('path')),
    win32: {
      normalize: jest.fn(),
    }
  }
})

describe('74717157', () => {
  test('should pass', () => {
    winPath.normalize.mockImplementation(() => 'override the original implementation')
    expect(jest.isMockFunction(winPath.normalize)).toBeTruthy();
    expect(winPath.normalize()).toBe('override the original implementation')
  })
})

检测结果:

PASS  stackoverflow/74717157/index.test.ts (10.557 s)
  74717157
    ✓ should pass (1 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        14.116 s

相关问题