🐊Putout plugin adds ability apply 'overrides'
npm install @putout/plugin-apply-overrides[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-apply-overrides.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-apply-overrides "npm"
🐊Putout plugin adds ability to apply overrides.
Checkout in 🐊Putout Editor.
When you write testable code and want to avoid mocking required or imported modules, one of a solutions to use simple form
of dependency injection:
``js
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:
`js
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.
``
npm i @putout/plugin-apply-overrides
`json`
{
"rules": {
"apply-overrides": "on"
}
}
`js`
async function matchToFlatDir(path, config, {readESLintConfig = _readESLintConfig} = {}) {}
`js``
async function matchToFlatDir(path, config, overrides = {}) {
const {
readESLintConfig = _readESLintConfig,
} = overrides;
}
MIT