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" }
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.
Jest supports TypeScript, via Babel. First, make sure you followed the instructions on using Babel above. Next, install the @babel/preset-typescript : npm.
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"] }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With