Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot find name 'it' in Jest TypeScript

I try to create an intial setup for Jest in React + TypeScript. I have completed the initial setup and try to check whether the test runs. When I run the test using the command npm test, I am getting the following error:

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`. 

I have installed the types for Jest as well as removed the types in tsconfig.json, but still I am getting the same error.

{   "compilerOptions": {     "target": "es6",     "lib": ["dom", "dom.iterable", "esnext"],     "allowJs": true,     "skipLibCheck": true,     "esModuleInterop": true,     "allowSyntheticDefaultImports": true,     "strict": true,     "forceConsistentCasingInFileNames": true,     "module": "esnext",     "moduleResolution": "node",     "plugins": [{ "name": "typescript-tslint-plugin" }],     "resolveJsonModule": true,     "isolatedModules": true,     "noEmit": true,     "jsx": "preserve",     "pretty": true,     "baseUrl": "src",     "types": ["jest"],     "typeRoots": ["./src/types"],     "suppressImplicitAnyIndexErrors": true   },   "include": ["src", "node_modules/@types/jest"],   "exclude": ["node_modules"] } `  

Package.json

     "jest": {         "transform": {           ".(ts|tsx)": "ts-jest"         },         "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",         "moduleFileExtensions": [           "ts",           "tsx",           "js"         ]       },       "devDependencies": {         "@babel/plugin-proposal-export-default-from": "^7.2.0",         "@types/enzyme": "^3.9.3",         "@types/jest": "^24.0.14",         "enzyme": "^3.10.0",         "gh-pages": "^1.2.0",         "husky": "^2.2.0",         "jest": "^24.8.0",         "node-sass": "^4.11.0",         "prettier": "^1.17.0",         "react-scripts": "2.1.8",         "react-test-renderer": "^16.8.6",         "stylelint": "^9.3.0",         "stylelint-config-recommended-scss": "^3.2.0",         "stylelint-config-standard": "^18.2.0",         "stylelint-order": "^0.8.1",         "stylelint-scss": "^3.1.3",         "ts-jest": "^24.0.2",         "tslint": "^5.16.0",         "tslint-config-prettier": "^1.18.0",         "tslint-plugin-prettier": "^2.0.1",         "tslint-react": "^4.0.0",         "tslint-react-hooks": "^2.1.0"       }  
like image 416
Nidhin Kumar Avatar asked Jun 14 '19 09:06

Nidhin Kumar


People also ask

Can t find name jest?

To solve the "Cannot find name 'it'" jest error, make sure to install the typings for jest - npm i -D @types/jest and add them to the types array in your tsconfig. json file. TypeScript has to be picking up the directory in which your tests are located. Here is an example of how the error occurs.

Does jest work with TypeScript?

Jest supports TypeScript, via Babel. First, make sure you followed the instructions on using Babel above. Next, install the @babel/preset-typescript : npm.


1 Answers

Install

npm install jest @types/jest ts-jest 

jest.config.js -- at root

 module.exports = {   roots: ['<rootDir>/src'],   transform: {     '^.+\\.tsx?$': 'ts-jest',   },   testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$',   moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], } 

tsconfig.json

{     "compilerOptions": {      ...        "types": ["reflect-metadata", "jest"],       "typeRoots": ["./types", "./node_modules/@types"]       ...     },     "exclude": ["node_modules", "**/*.spec.ts", "**/*.test.ts"],     "include": ["./src/**/*.tsx", "./src/**/*.ts"]   } 
like image 161
Shailesh Jha Avatar answered Sep 17 '22 06:09

Shailesh Jha