How to Fix the Cannot Find Name ‘it’ Jest Error in TypeScript
To fix the “cannot find name ‘it'” Jest error, install the type definitions for Jest with npm i -D @types/jest
and add them to the types
array in your tsconfig.json file.
This error occurs when you try to use the it()
function from Jest in a TypeScript file, but TypeScript cannot find the type definitions for the package.
Here is an example of the error occurring in Visual Studio Code:
index.ts
// Cannot find name 'it'. Do you need to install type
// definitions for a test runner? Try
// `npm i --save-dev @types/jest` or
// `npm i --save-dev @types/mocha`. ts(2582)
describe('example', () => {
it('adds two numbers together', () => {
expect(2 + 2).toBe(4);
});
});
Install the type definitions for Jest by running the following command in a terminal at the root directory of your project:
npm i -D @types/jest
If you didn’t already have Jest installed, you can install it with the type definitions in one command:
npm i -D @types/jest jest
Add typings to tsconfig.json
types
array
In some cases, this is all you need to do and the error will stop. But if it persists, you’ll need to add jest
to the types
array in your tsconfig.json file, so it looks something like this:
tsconfig.json
{
"compilerOptions": {
"types": [
// ... other types
"jest"
]
// ..other settings
}
}
Include test files
If the error still doesn’t go away, ensure that TypeScript does not ignore the directory containing your test files. If you’ve set the include
array in your tsconfig.json file, ensure the patterns specified in this array match the directory where your test files are located.
For example, if your tests are located in a src directory, TypeScript will detect them with a configuration like this:
tsconfig.json
{
"compilerOptions": {},
"include": ["src/**/*"],
}
But if they’re located in a tests directory, we’ll need to add an additional glob pattern to make TypeScript detect them:
tsconfig.json
{
"compilerOptions": {},
"include": [
"src/**/*",
"tests/**/*"
],
}
We can also include glob patterns to match test files with a specific ending or extension. For example, we can include all files ending with “.spec.ts” and “.test.ts” with the following configuration:
tsconfig.json
{
"compilerOptions": {},
"include": [
"src/**/*",
"**/*.spec.ts",
"**/*.test.ts"
],
}