Búsqueda de sitios web

Jest y TypeScript: VS Code no puede encontrar nombres


Estoy usando Jest con TypeScript. A pesar de que mi código funciona y puedo construir mi proyecto, Visual Studio Code me muestra ese error para todos los métodos de 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)

Tengo directorios src y tests que están separados. Seguí configuraciones que encontré en Internet, pero no cambia nada, ¿qué me está faltando? La única forma hasta ahora es incluir mi carpeta tests en la configuración include en tsconfig, lo cual es malo porque se construye en el directorio dist.

Dependencias de desarrollo instaladas: 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'],
}

Respuesta #1

Solo incluye jest como typeAcquisition en tu tsconfig.json así:

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

Respuesta #2

Si tienes una carpeta de pruebas fuera de "src", asegúrate de que esté incluida en el tsconfig.json

  ,
  "include": [
    "src",
    "tests"
  ],

de lo contrario recibirás

Cannot use namespace 'jest' as a value.ts(2708)

y

Cannot find name 'beforeEach'

Tus referencias de broma serán rojas y no serán reconocidas.

Artículos relacionados