$ yarn add --dev eslint eslint-plugin-jest
Note: If you installed ESLint globally then you must also install
eslint-plugin-jest globally.
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/prefer-to-have-length": "warn",
"jest/valid-expect": "error"
}
}You can also whitelist the environment variables provided by Jest by doing:
{
"env": {
"jest/globals": true
}
}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"]
}This plugin also exports a configuration named style, which adds some
stylistic rules, such as prefer-to-be-null, which enforces usage of toBeNull
over toBe(null). All rules included are:
prefer-to-be-nullprefer-to-be-undefinedprefer-to-containprefer-to-have-length
See ESLint documentation for more information about extending configuration files.
| Rule | Description | Recommended | Fixable |
|---|---|---|---|
| consistent-test-it | Enforce consistent test or it keyword | ||
| expect-expect | Enforce assertion to be made in a test body | ||
| lowercase-name | Disallow capitalized test names | ||
| no-alias-methods | Disallow alias methods | ||
| no-disabled-tests | Disallow disabled tests | ||
| no-commented-out-tests | Disallow commented out tests | ||
| no-empty-title | Disallow empty titles | ||
| no-focused-tests | Disallow focused tests | ||
| no-hooks | Disallow setup and teardown hooks | ||
| no-identical-title | Disallow identical titles | ||
| no-jasmine-globals | Disallow Jasmine globals | ||
| no-jest-import | Disallow importing jest |
||
| no-mocks-import | Disallow manually importing from __mocks__ |
||
| no-large-snapshots | Disallow large snapshots | ||
| no-test-callback | Using a callback in asynchronous tests | ||
| no-test-prefixes | Disallow using f & x prefixes to define focused/skipped tests |
||
| no-test-return-statement | Disallow explicitly returning from tests | ||
| no-truthy-falsy | Disallow using toBeTruthy() & toBeFalsy() |
||
| prefer-expect-assertions | Suggest using expect.assertions() OR expect.hasAssertions() |
||
| prefer-spy-on | Suggest using jest.spyOn() |
||
| prefer-strict-equal | Suggest using toStrictEqual() |
||
| prefer-to-be-null | Suggest using toBeNull() |
||
| prefer-to-be-undefined | Suggest using toBeUndefined() |
||
| prefer-to-contain | Suggest using toContain() |
||
| prefer-to-have-length | Suggest using toHaveLength() |
||
| prefer-inline-snapshots | Suggest using toMatchInlineSnapshot() |
||
| require-tothrow-message | Require that toThrow() and toThrowError includes a message |
||
| valid-describe | Enforce valid describe() callback |
||
| valid-expect-in-promise | Enforce having return statement when testing with promises | ||
| valid-expect | Enforce valid expect() usage |
||
| prefer-todo | Suggest using test.todo() |
||
| prefer-called-with | Suggest using toBeCalledWith() OR toHaveBeenCalledWith() |
This project aims to provide formatting rules (auto-fixable where possible) to ensure consistency and readability in jest test suites.
https://github.com/dangreenisrael/eslint-plugin-jest-formatting