javascript / expert
Snippet
Benutzerdefinierte ES-Modul-Hooks zur dynamischen Test-Double-Abfangung
Anpassungs-Hooks für ES-Module in Node.js ermöglichen das Abfangen der Modulauflösung (`resolve`) und des Quellcode-Ladevorgangs (`load`). Dieses Muster gestattet das Injizieren von Test-Mocks, virtuellen Modulen oder dynamischen Code-Transformationen zur Laufzeit.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
export async function resolve(specifier, context, nextResolve) {if (specifier.startsWith('mock:')) {const realModule = specifier.slice(5);return {shortCircuit: true,url: `file:///test-mocks/${realModule}.mock.js`};}return nextResolve(specifier, context);}export async function load(url, context, nextLoad) {if (url.includes('/test-mocks/')) {return {format: 'module',shortCircuit: true,source: 'export const status = "mocked"; export default { mocked: true };'};}return nextLoad(url, context);}
nodejs
Erklärung
1
export async function resolve(specifier, context, nextResolve) {
Exportiert einen Modulauflösungs-Hook für Node.js, um Import-Bezeichner abzufangen.
2
shortCircuit: true,
Signalisiert der Node.js-Modullade-Kette, die nachfolgende Standardauflösung zu überspringen.
3
export async function load(url, context, nextLoad) {
Exportiert einen Lade-Hook für ES-Module, um virtuellen Quellcode dynamisch bereitzustellen.
4
source: 'export const status = "mocked"; export default { mocked: true };'
Synthetisiert virtuellen JavaScript-Quellcode im Speicher für gemockte Importe.