🐊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.
npm i @putout/plugin-apply-overrides
{
"rules": {
"apply-overrides": "on"
}
}
async function matchToFlatDir(path, config, {readESLintConfig = _readESLintConfig} = {}) {}
async function matchToFlatDir(path, config, overrides = {}) {
const {
readESLintConfig = _readESLintConfig,
} = overrides;
}
MIT