jest的vscode自动类型获取

5m1hhzi4  于 2023-09-28  发布在  Jest
关注(0)|答案(4)|浏览(126)

我有vscode 1.9,我想有jest测试的intellisense。问题是describeitexpect等在jest中是全局可用的,你不需要在测试文件中使用import。所以vscode不会为它们显示intellisense。
是否有任何全局变量的自动类型获取配置?

3phpmpom

3phpmpom1#

在这种情况下,您有几个选择:
jest添加到您的package.json

"dependencies": {
  "jest": "^18.1.0"
}

这只适用于使用JavaScript并且没有tsconfig.json的情况。
安装@types/jest

$ npm install -D @types/jest

这应该适用于JavaScript和TypeScript项目。但是@types可以被jsconfig.json/tsconfig.json禁用:http://www.typescriptlang.org/docs/handbook/tsconfig-json.html
在工作区的根目录下创建一个jsconfig.json文件,专门包含jest:

{
    "typeAcquisition": {
        "include": [
            "jest"
        ]
    }
}

这只适用于启用自动类型获取的JavaScript项目。
所有这些都应该允许VSCode在没有importrequire的情况下获取jest的类型

yvt65v4c

yvt65v4c2#

我尝试安装@types/jest,它确实工作了,但问题是它导致jest建议也出现在我的.js文件中。我不知道如何获得testexpect等的全局建议。仅在.test.js文件中,而不是在.js文件中。
因此,我决定手动导入我要在每个.test.js文件中使用的每个jest global,这允许建议与类型一起出现,但避免建议出现在.js文件中:
import { test, expect } from '@jest/globals'

yduiuuwa

yduiuuwa3#

npm install -D @types/jest
编辑jest.config.js

typeAcquisition: {
    include: ['jest'],
  },
tag5nh1u

tag5nh1u4#

在tsconfig.json中,确保将jest条目添加到types列表中。
举例来说:

{
  "compilerOptions": {
    "esModuleInterop": true,
    "lib": ["es2022"],
    "module": "es2022",
    "moduleResolution": "node",
    "strict": true,
    "sourceMap": true,
    "target": "ES2022",
    "types": ["node", "jest"],
    "outDir": "build"
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

相关问题