Jest & TypeScript:VS Code 找不到名称

Posted

技术标签:

【中文标题】Jest & TypeScript:VS Code 找不到名称【英文标题】:Jest & TypeScript: VS Code can't find names 【发布时间】:2021-01-26 16:40:16 【问题描述】:

我正在使用 Jest 和 TypeScript。尽管我的代码可以工作并且我可以构建我的项目,但 Visual Studio Code 对所有 Jest 方法都会抛出该错误(describe()test()...):

Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.ts(2582)

我有 srctests 分开的目录。我遵循了在 Internet 上找到的配置,但它并没有改变任何东西,我错过了什么?到目前为止,唯一的方法是将我的tests 文件夹包含在tsconfiginclude 设置中,这很糟糕,因为它内置在dist 目录中。

已安装开发依赖项:jest ts-jest @types/jest

tsconfig.json


  "compilerOptions": 
    "sourceMap": true,
    "module": "commonjs",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "allowJs": true,
    "jsx": "react",
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "baseUrl": "./",
    "paths": 
      "*": ["src/*"]
    ,
    "typeRoots": ["./node_modules/@types"],
    "types": ["node", "jest"]
  ,
  "strict": true,
  "compileOnSave": false,
  "include": ["src"]

jest.config.js

module.exports = 
  roots: ['<rootDir>'],
  preset: 'ts-jest',
  testRegex: 'tests/src/.*\\.test.(js|jsx|ts|tsx)$',
  transform: 
    '^.+\\.tsx?$': 'ts-jest',
  ,
  transformIgnorePatterns: [],
  snapshotSerializers: ['enzyme-to-json/serializer'],
  moduleDirectories: ['node_modules', 'src', 'tests'],
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
  moduleNameMapper: 
    '\\.(css|scss|jpg|png|svg)$': 'mocks/empty.ts',
  ,
  setupFilesAfterEnv: ['<rootDir>/tests/jest.setup.ts'],
  collectCoverage: true,
  collectCoverageFrom: ['src/**/*.js,x,ts,x', '!src/index.tsx', '!src/custom.d.ts'],

【问题讨论】:

我认为问题不在于您的 tsconfig.json 文件,您不应该在那里做任何事情,不确定您的 jest.config.js 文件,但您是否尝试过使用 @ 开发测试987654338@,如果可以,您可以使用导入语句发布该代码吗?另外,你在终端运行什么来运行测试?请记住,Jest 没有开箱即用的 TypeScript 知识,即使使用 jestts-jest 也会出现问题。 请看类似问题的答案:***.com/a/61153019/3082178。 【参考方案1】:

只需将jest 作为typeAcquisition 包含在您的tsconfig.json 中即可:

// tsconfig.json

  "compilerOptions":  /* ... */ ,
  "typeAcquisition":  "include": ["jest"] ,
  // ... your other options go here

【讨论】:

以上是关于Jest & TypeScript:VS Code 找不到名称的主要内容,如果未能解决你的问题,请参考以下文章

Jest and React and Typescript & React-Testing-Library 错误

Jest 遇到了意外的令牌(React、Typescript、Babel、Jest 和 Webpack 设置)

[TypeScript] Typescript Interfaces vs Aliases Union & Intersection Types

如何在 Visual Studio Code (VS Code) 上调试用 Typescript 编写的 Express 应用程序

Jest、Typescript、ts-jest:覆盖范围略有不正确

Jest mock 总是给出 undefined (typescript + ts-jest)