使用 Jest 模拟默认导出函数: TypeError: (0 , _sampleFunction).default is not a function

Jim*_*mmy 1 javascript typescript jestjs

我有以下文件:

样本函数.ts:

export default (x: number) => x * 2;
Run Code Online (Sandbox Code Playgroud)

测试文件:

import sampleFunction from './sampleFunction';

export default () => {
  const n = sampleFunction(12);
  return n - 4;
};
Run Code Online (Sandbox Code Playgroud)

测试文件.test.ts:

import testFile from './testFile';

const mockFn = jest.fn();

jest.mock('./sampleFunction', () => ({
  __esModule: true,
  default: mockFn,
}));

test('sample test', () => {
  testFile();
  expect(mockFn).toBeCalled();
});
Run Code Online (Sandbox Code Playgroud)

当我运行时testFile.test.ts,出现以下错误:

TypeError: (0 , _sampleFunction).default is not a function
Run Code Online (Sandbox Code Playgroud)

sampleFunction.ts当 Jest 有默认导出函数时,我如何使用它进行模拟?

I'm*_*Too 9

当模拟默认导出时,您需要将default和传递__esModule给 jest:

const mockFn = jest.fn();

jest.mock("./sampleFunction", () => ({
  __esModule: true,
  default: mockFn,
}))
Run Code Online (Sandbox Code Playgroud)