使用.ts文件(TypeScript)配置Jest全局测试设置

使用.ts文件(TypeScript)配置Jest全局测试设置,typescript,jestjs,Typescript,Jestjs,我正在使用ts jest(jest和TypeScript)并希望配置 所有测试套件的一些全局设置(初始化测试数据库) 我发现jest配置中有globalSetup选项: "jest": { "globalSetup": "./jest-config.js" } 但只有.js文件可用于安装。我想使用.ts文件,因为我所有的代码 包括TypeScript中的设置代码 我怎样才能做到这一点呢?我找到了一个解决方案 我最初的项目结构是: . |--src | |--service.ts |-

我正在使用ts jest(jest和TypeScript)并希望配置 所有测试套件的一些全局设置(初始化测试数据库)

我发现jest配置中有
globalSetup
选项:

"jest": {
    "globalSetup": "./jest-config.js"
}
但只有
.js
文件可用于安装。我想使用
.ts
文件,因为我所有的代码 包括TypeScript中的设置代码

我怎样才能做到这一点呢?

我找到了一个解决方案

我最初的项目结构是:

.
|--src
|  |--service.ts
|--tests
|  |--service.test.ts
|--dist
|--tsconfig.json 
|--package.json
package.json中的Jest配置:

"jest": {
  "globals": {
    "ts-jest": {
      "tsconfig": "tsconfig.json"
    }
  },
  "moduleFileExtensions": ["ts","js"],
  "transform": {
    "^.+\\.(ts|tsx)$": "./node_modules/ts-jest/preprocessor.js"
  },
  "testMatch": [
    "**/tests/**/*.test.(ts|js)"
  ],
  "testEnvironment": "node"
}
使用此配置
ts jest
执行.ts文件的内存传输。 我的
tsconfig.json
compilerOptions
中有
outDir
选项,但该outDir中没有任何内容,因为我无法使用transpiled jest-config.js

然后我移动src中的tests文件夹并更改Jest-config。 该项目的新结构为:

.
|--src
|  |--service.ts
|  |--tests
|     |--service.test.ts
|     |--jest-config.ts
|--dist
|--tsconfig.json 
|--package.json
新的Jest配置是:

"jest": {
  "globalSetup": "./dist/tests/jest-config.js",
  "moduleFileExtensions": ["ts", "js", "json"],
  "testMatch": [
    "**/dist/**/*.test.js"
  ],
  "testEnvironment": "node"
}
现在我可以在jest中使用jest-config.js进行全局设置

加成

  • Jest安装文件(在我的示例Jest config.js中)必须导出一个异步函数:

    module.exports=async function(){…}

  • 在运行测试之前,您需要编译源.ts文件


全局设置是在ts环境可用之前执行的,因此解决方法是通过在文件开头要求ts节点手动创建环境

在jest配置(
package.json
jest.config.js
)中:

“globalSetup”:“/globalSetup.ts”
然后在
globalSetup.ts
中:

require('ts-node/register');
常量设置=():无效=>{
//需要全局设置的任何内容
};
导出默认设置;

您可以在上阅读有关ts节点的更多信息。

关于ts jest项目中此问题的问题:此影响代码覆盖率报告。它会影响调试吗?太棒了