javascript / expert
Snippet
Prototyp-basierter Dependency-Injection-Container für React-Unit-Tests
Verwendet Prototypen-Delegation (Object.create) und WeakMap-Speicherverwaltung zur Erstellung eines isolierten Dependency-Injection-Containers für React-Hooks in automatisierte Unit-Tests. Kind-Test-Scopes erben Basis-Mocks, ohne den Haupt-Testregister zu verschmutzen.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function createTestContainer(parent = null) {const registry = Object.create(parent ? parent.registry : null);const cleanups = new WeakMap();return {registry,register(key, service, cleanupFn) {registry[key] = service;if (cleanupFn) cleanups.set(service, cleanupFn);},resolve(key) {const service = registry[key];if (!service) throw new Error(`Unresolved dependency: ${String(key)}`);return service;},teardown(service) {const cleanup = cleanups.get(service);if (cleanup) cleanup();}};}
react
Erklärung
1
const registry = Object.create(parent ? parent.registry : null);
Erstellt ein prototypisch verknüpftes Suchobjekt für hierarchische Mock-Vererbung in Testsuiten.
2
const cleanups = new WeakMap();
Verwendet eine WeakMap, um Cleanup-Handler an Service-Instanzen zu binden, ohne Speicherlecks zu verursachen.
3
if (!service) throw new Error(`Unresolved dependency: ${String(key)}`);
Überprüft die Abhängigkeitsauflösung und wirft beschreibende Fehler, falls Dienste fehlen.
4
teardown(service) { const cleanup = cleanups.get(service); ... }
Führt beim Demontieren getesteter React-Hooks spezifische Cleanup-Handler aus.