no-mocks-require
Ast Rule: function call
no-mocks-require
const MOCK_FOLDER = "__mocks__"
function visit(node, filename, code) {
// only run on .spec. or .test. files
if (!filename.includes(".spec.") && !filename.includes(".test.")) return;
const isRequire = node.functionName?.value?.includes("require")
if (!isRequire) return;
if (node.arguments && node.arguments.values && node.arguments.values.length === 1) {
const value = node.arguments.values[0].value
if (!value?.value || !value.value.includes(MOCK_FOLDER)) return;
const error = buildError(
value.start.line,
value.start.col,
value.end.line,
value.end.col,
`Disallow manually importing from '__mocks__'`,
"WARNING",
"BEST_PRACTICE"
)
addError(error)
}
}
bad-mock-require.spec.js
Expected test result: has error
Requiring mocks directly
good-mock-require.test.js
Expected test result: no error
Requiring the module and not the mocks directly