Перезапись импорта модуля для насмешек во время тестов?

#javascript #es6-modules

Вопрос:

Я пишу модульные тесты и хотел бы имитировать функцию в модуле, но избегать ее использования jest.mock . Возможно ли такое?

Если нет, то как это jest.mock работает и переживет ли он переход от commonjs к esmodules в узле?

 import * as foo from './foo'

describe('foo', () => {
  let mockFn: jest.Mock

  beforeEach(() => {
    mockFn = jest.fn()
    
    Object.defineProperty(foo, 'bar', {
      value: mockFn,
      writable: true,
      configurable: true,
    })
  })

  it('Should not throw', () => {
    const testFunc = () => foo()
    expect(testFunc).not.toThrow()
  })
})