我正在使用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
我该如何解决这个问题?