What is eslint-plugin-jest?
The eslint-plugin-jest package is an ESLint plugin that provides linting rules for Jest, a popular JavaScript testing framework. It helps maintain code quality and enforce best practices by analyzing test files for common issues and stylistic preferences.
What are eslint-plugin-jest's main functionalities?
Enforcing consistent test descriptions
This rule enforces a consistent test function name, either `test` or `it`, within the test files.
/* eslint jest/consistent-test-it: ["error", { fn: "test" }] */
// Incorrect
describe('myFeature', () => {
it('does something', () => {
// test implementation
});
});
// Correct
describe('myFeature', () => {
test('does something', () => {
// test implementation
});
});
Preventing disabled tests
This rule prevents the use of `xdescribe`, `xit`, or `test.skip`, which are used to disable tests, to ensure that all tests are run.
/* eslint jest/no-disabled-tests: "error" */
// Incorrect
xdescribe('myFeature', () => {
test('does something', () => {});
});
xit('does something', () => {});
// Correct
describe('myFeature', () => {
test('does something', () => {});
});
Ensuring tests contain assertions
This rule ensures that test blocks contain at least one assertion call, which is necessary for a meaningful test.
/* eslint jest/expect-expect: "error" */
// Incorrect
test('does something', () => {
// no assertions
});
// Correct
test('does something', () => {
expect(something).toBe(true);
});
Disallowing identical titles
This rule disallows using the same title for multiple test cases or `describe` blocks, which can cause confusion when trying to identify tests.
/* eslint jest/no-identical-title: "error" */
// Incorrect
describe('myFeature', () => {
test('does something', () => {});
test('does something', () => {});
});
// Correct
describe('myFeature', () => {
test('does something', () => {});
test('does something else', () => {});
});
Other packages similar to eslint-plugin-jest
eslint-plugin-mocha
This package provides linting rules for Mocha, another JavaScript test framework. It is similar to eslint-plugin-jest but tailored for Mocha's API and conventions.
eslint-plugin-jasmine
This package offers linting rules for Jasmine, a behavior-driven development framework for testing JavaScript code. It serves a similar purpose to eslint-plugin-jest but is specific to Jasmine's syntax and style.
eslint-plugin-testing-library
This ESLint plugin enforces best practices for the Testing Library, which is often used with Jest for testing React components. It complements eslint-plugin-jest by focusing on the specific patterns and practices of the Testing Library.
eslint-plugin-cypress
This plugin provides linting rules for Cypress, an end-to-end testing framework. While it is not specific to Jest, it offers similar functionality for maintaining code quality in a different testing context.
eslint-plugin-jest
Eslint plugin for Jest
Installation
$ yarn add --dev eslint eslint-plugin-jest
Note: If you installed ESLint globally then you must also install eslint-plugin-jest
globally.
Usage
Add jest
to the plugins section of your .eslintrc
configuration file. You can omit the eslint-plugin-
prefix:
{
"plugins": [
"jest"
]
}
Then configure the rules you want to use under the rules section.
{
"rules": {
"jest/no-disabled-tests": "warn",
"jest/no-focused-tests": "error",
"jest/no-identical-title": "error",
"jest/valid-expect": "error"
}
}
You can also whitelist the environment variables provided by Jest by doing:
{
"env": {
"jest/globals": true
}
}
Supported Rules
Shareable configurations
Recommended
This plugin exports a recommended configuration that enforces good testing practices.
To enable this configuration use the extends
property in your .eslintrc
config file:
{
"extends": ["plugin:jest/recommended"]
}
See ESLint documentation for more information about extending configuration files.
The rules enabled in this configuration are:
Credit