0

我正在使用esbuild-jest包作为 jest 代码转换器。

jest.config.js

module.exports = {
  testEnvironment: 'jsdom',
  transform: {
    '\\.[jt]sx?$': 'esbuild-jest',
  },
};

index.ts

export default function myFunc(): string {
  return 'real value';
}

index.test.ts

describe('test suites', () => {
  beforeEach(() => {
    jest.resetModules();
  });
  it('test one', async () => {
    jest.doMock('./index', () => jest.fn(() => 'one'));
    const myFunc = (await import('.')).default;
    expect(myFunc()).toBe('one');
  });
});

当我运行jest命令时,出现错误:

FAIL  stackoverflow/71166203/index.test.ts
  test suites
    ✕ test one (5 ms)

  ● test suites › test one

    TypeError: _vm(...).SyntheticModule is not a constructor



      at Runtime.loadCjsAsEsm (node_modules/jest-runtime/build/index.js:657:20)
      at Object.<anonymous> (stackoverflow/71166203/index.test.ts:26:20)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 total
Snapshots:   0 total
Time:        1.297 s

包版本:

"esbuild": "^0.14.21",
"esbuild-jest": "^0.5.0",
"jest": "^26.6.3",
"typescript": "^4.1.2"

节点版本:v14.16.0

我该如何解决这个问题?

4

0 回答 0