Jest.js 如何在Typescript中排除用于编译的文件,但包含用于测试的文件?

new9mtju  于 2022-12-08  发布在  Jest
关注(0)|答案(1)|浏览(187)

文件结构
函数/库/源/...源.ts文件
函数/lib/test/...测试文件
functions/tsconfig.json
当我在tsconfig.json.include属性中包含测试文件目录时,linting在我的测试文件中工作得很好。
当我从tsconfig.json include属性中删除test目录时,我在所有Jest方法的测试文件中得到如下错误:
找不到名称“test”。是否需要安装测试运行程序的类型定义?请尝试npm i @types/jestnpm i @types/mocha
tsconfig.json如下所示

{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "outDir": "lib",
    "sourceMap": true,
    "strict": true,
    "target": "es2017"
  },
  "compileOnSave": true,
  "include": [
    "src",
  ],

}

jest.config.js如下所示

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
};

我怎样才能获得Jest方法识别,而不被编译测试文件所困扰?

6ovsh4lw

6ovsh4lw1#

This article有一个适合我的解决方案。
创建一个tsconfig.build.json文件来扩展tsconfig.json文件,其内容如下:

{
  "extends": "./tsconfig.json",
  // 👇️ this may vary depending on how you
  // name your test files
  "exclude": [
    "lib/test/*",
  ]
}

然后,您的普通tsconfig.json将用于测试运行程序,要传输您的文件,请使用以下命令:

tsc --project tsconfig.build.json

您可以将该命令作为脚本添加到package.json中作为build命令。

相关问题