$ 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-null
prefer-to-be-undefined
prefer-to-contain
prefer-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