This package contains en ESLint rule which throws an error (or warning) when the only()
method is called on describe
, context
and it
Mocha test keywords.
only()
is a useful mocha feature that lets the test runner run one specific part of a test. Often, developers may end up forgetting removing the only()
method before commiting and pushing their code. This results in the CI tool running only one specific test suite which may end up in a false-positive build.
By having ESLint throw an error in such cases, you can rest assured your CI tool runs all your test suites.
You'll first need to install ESLint:
$ npm i eslint --save-dev
Next, install eslint-plugin-mocha-no-only
:
$ npm install eslint-plugin-mocha-no-only --save-dev
Note: If you installed ESLint globally (using the -g
flag) then you must also install eslint-plugin-mocha-no-only
globally.
Add eslint-plugin-mocha-no-only
to the plugins section of your .eslintrc
configuration file. You can omit the eslint-plugin-
prefix:
{
"plugins": [
"mocha-no-only"
]
}
Then configure the rules you want to use under the rules section.
{
"rules": {
"mocha-no-only/mocha-no-only": ["error"]
}
}
Note: You may want to have a different .eslintrc
file in your tests directory and place this plugin and rule in it. This would make sure ESLint doesn't errors on other JavaScript object named describe.only()
, for example. There's also no need to have ESLint watch for this rule in files where there are no mocha tests.
describe("foobar", function() {
var foo;
beforeEach(function() {
foo = new Foo();
});
it.only("should do things", function() {
expect(foo).to.do.things;
});
});
describe("foobar", function() {
var foo;
beforeEach(function() {
foo = new Foo();
});
it("should do things", function() {
expect(foo).to.do.things;
});
});