@putout/plugin-apply-overrides
v2.1.0
Published
🐊Putout plugin adds ability apply 'overrides'
Downloads
20,491
Maintainers
Readme
@putout/plugin-apply-overrides
🐊Putout plugin adds ability to apply overrides
.
Checkout in 🐊Putout Editor.
When you write testable code and want to avoid mocking require
d or import
ed modules, one of a solutions to use simple form
of dependency injection:
import {readDirSync as _readdirSync} from 'node:fs/promises';
export const readRules = (dirOpt, rulesDir, overrides = {}) => {
const {
cwd,
readdirSync = _readdirSync,
} = overrides;
};
Pass overrides
as last parameter, in this case use can test easily your function readFules
:
import {test, stub} from 'supertape';
test('readRules', (t) => {
const readdirSync = stub().returns([]);
const rules = readRules('', '', {
readdirSync,
});
t.equal(rules, []);
t.end();
});
Then only issue is, when you have lots of parameters, your function declaration will be to long, or to hard to read, so recommended way is to use overrides
variable.
Install
npm i @putout/plugin-apply-overrides
Rule
{
"rules": {
"apply-overrides": "on"
}
}
❌ Example of incorrect code
async function matchToFlatDir(path, config, {readESLintConfig = _readESLintConfig} = {}) {}
✅ Example of correct code
async function matchToFlatDir(path, config, overrides = {}) {
const {
readESLintConfig = _readESLintConfig,
} = overrides;
}
License
MIT