$ npm install eslint-plugin-mocha
ESLint rules for mocha.
This plugin requires ESLint 4.0.0
or later.
npm install --save-dev eslint-plugin-mocha
.eslintrc.json
Then add a reference to this plugin and selected rules in your eslint config:
{
"plugins": [
"mocha"
]
}
eslint.config.js
(requires eslint >= 8.23.0)To use this plugin with the new eslint configuration format (flat config):
import mochaPlugin from 'eslint-plugin-mocha';
export default [
mochaPlugin.configs.flat.recommended // or `mochaPlugin.configs.flat.all` to enable all
// ... Your configurations here
];
This plugin supports the following settings, which are used by multiple rules:
additionalCustomNames
: This allows rules to check additional function names when looking for suites or test cases. This might be used with a custom Mocha extension, such as ember-mocha
or mocha-each
.
Example:
{
"rules": {
"mocha/no-skipped-tests": "error",
"mocha/no-exclusive-tests": "error"
},
"settings": {
"mocha/additionalCustomNames": [
{ "name": "describeModule", "type": "suite", "interfaces": [ "BDD" ] },
{ "name": "testModule", "type": "testCase", "interfaces": [ "TDD" ] }
]
}
}
The name
property can be in any of the following forms:
A plain name e.g. describeModule
, which allows:
describeModule("example", function() { ... });
A dotted name, e.g. describe.modifier
, which allows:
describe.modifier("example", function() { ... });
A name with parentheses, e.g. forEach().describe
, which allows:
forEach([ 1, 2, 3 ])
.describe("example", function(n) { ... });
Any combination of the above, e.g. forEach().describeModule.modifier
, which allows:
forEach([ 1, 2, 3 ])
.describeModule.modifier("example", function(n) { ... });
recommended
This plugin exports a recommended config that enforces good practices.
Enable it with the extends option:
{
"extends": [
"plugin:mocha/recommended"
]
}
all
There's also a configuration that enables all of our rules.
See Configuring Eslint on eslint.org for more info.
💼 Configurations enabled in.
⚠️ Configurations set to warn in.
🚫 Configurations disabled in.
✅ Set in the recommended
configuration.
🔧 Automatically fixable by the --fix
CLI option.
Name | Description | 💼 | ⚠️ | 🚫 | 🔧 |
---|---|---|---|---|---|
consistent-spacing-between-blocks | Require consistent spacing between blocks | ✅ | 🔧 | ||
handle-done-callback | Enforces handling of callbacks for async tests | ✅ | |||
max-top-level-suites | Enforce the number of top-level suites in a single file | ✅ | |||
no-async-describe | Disallow async functions passed to describe | ✅ | 🔧 | ||
no-empty-description | Disallow empty test descriptions | ✅ | |||
no-exclusive-tests | Disallow exclusive tests | ✅ | |||
no-exports | Disallow exports from test files | ✅ | |||
no-global-tests | Disallow global tests | ✅ | |||
no-hooks | Disallow hooks | ✅ | |||
no-hooks-for-single-case | Disallow hooks for a single test or test suite | ✅ | |||
no-identical-title | Disallow identical titles | ✅ | |||
no-mocha-arrows | Disallow arrow functions as arguments to mocha functions | ✅ | 🔧 | ||
no-nested-tests | Disallow tests to be nested within other tests | ✅ | |||
no-pending-tests | Disallow pending tests | ✅ | |||
no-return-and-callback | Disallow returning in a test or hook function that uses a callback | ✅ | |||
no-return-from-async | Disallow returning from an async test or hook | ✅ | |||
no-setup-in-describe | Disallow setup in describe blocks | ✅ | |||
no-sibling-hooks | Disallow duplicate uses of a hook at the same level inside a describe | ✅ | |||
no-skipped-tests | Disallow skipped tests | ✅ | |||
no-synchronous-tests | Disallow synchronous tests | ✅ | |||
no-top-level-hooks | Disallow top-level hooks | ✅ | |||
prefer-arrow-callback | Require using arrow functions for callbacks | ✅ | 🔧 | ||
valid-suite-description | Require suite descriptions to match a pre-configured regular expression | ✅ | |||
valid-test-description | Require test descriptions to match a pre-configured regular expression | ✅ |
© 2010 - cnpmjs.org x YWFE | Home | YWFE