我正在尝试使用Jest运行Typescript代码的Typescript测试。我尝试使用多种形状的ts-jest来配置Jest,但是没有成功。
我得到了:
node_modules/@polkadot/api/promise/index.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
^^^^^^
SyntaxError: Cannot use import statement outside a module
1 | import log4js from "log4js";
> 2 | import { ApiPromise } from "@polkadot/api/promise";
| ^
我的jest.config.ts:
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
import type { Config } from "@jest/types";
// Sync object
const config: Config.InitialOptions = {
roots: ["./"],
preset: "ts-jest",
coverageDirectory: "../coverage",
verbose: true,
testEnvironment: "node",
//setupFilesAfterEnv: ["./jest.setup.ts"],
testMatch: ["**/?(*.)+(test).ts"],
resetMocks: true,
clearMocks: true,
extensionsToTreatAsEsm: [".ts"],
transformIgnorePatterns: ["node_modules/(?!(@polkadot)/)"],
//collectCoverage: true
};
export default config;
使用以下命令运行测试:"jest --config src/test/jest.config.ts --detectOpenHandles"
对如何解决这个问题有什么想法吗?
我还尝试执行我的代码with TAP, but also unsuccessfully。如果异步测试可以运行,我将非常感谢解决这两个问题的指导。
发布于 2021-09-17 13:12:10
你用Babel设置jest了吗?Jest
不理解Typescript,所以它依赖babel进行翻译。
发布于 2021-09-14 15:07:01
这个问题首先与这样一个事实有关,即node_modules
中的所有代码在Jest执行之前都不会被转换,并且Jest只能处理CommonJS code。为了将node_modules
中的ESM代码转换为CJS,您必须添加transformIgnorePatterns
。看看this example,看看你是如何正确地设置它的。
https://stackoverflow.com/questions/69122308
复制相似问题