typescriptjestjs

Cannot find name 'describe'. Do you need to install type definitions for a test runner?


When using TypeScript in conjunction with Jest, my specs would fail with error messages like:

test/unit/some.spec.ts:1:1 - error TS2582: 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`.
test/unit/some.spec.ts:2:3 - error TS2582: Cannot find name 'it'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
test/unit/some.spec.ts:3:7 - error TS2304: Cannot find name 'expect'.
test/unit/some.spec.ts:7:1 - error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.

The types are already installed.

I use:

    "@types/jest": "^23.3.12",
    "jest": "^23.6.0",
    "ts-jest": "^23.10.5",
    "typescript": "^3.1.6"

I run tests using jest --forceExit --coverage --verbose


Solution

  • After fiddling with the tsconfig.json for a while I finally figured that commenting the "types": [], will work.

    Failing configuration (before)

    // tsconfig.json
    {
      "compilerOptions": {
        "types": []
      }
    }
    

    Working configuration

    // tsconfig.json
    {
      "compilerOptions": {
        // "types": []
      }
    }