javascript / expert
Snippet
WeakMap-gecachte Higher-Order-Funktionsbindung für React-Komponententest-Umgebungen
Beim Isolieren von Komponenten in automatisierten Unit-Tests birgt das Speichern von Spy-Handler-Referenzen in statischen Maps das Risiko von Speicherlecks über Testsuiten hinweg. Die Verwendung einer WeakMap mit der Komponentenregistrierung ermöglicht die Garbage Collection von Test-Harnesses bei schnellem Zugriff auf Spy-Registrierungen.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
const mockFnRegistry = new WeakMap();export function createIsolatedTestHarness(Component) {return function BoundHarness(props) {let boundSpies = mockFnRegistry.get(Component);if (!boundSpies) {boundSpies = new Map();mockFnRegistry.set(Component, boundSpies);}const safeProps = { ...props, _harnessId: Symbol('harness') };return Component(safeProps);};}
react
Erklärung
1
const mockFnRegistry = new WeakMap();
Erstellt eine schwache Referenz-Map, bei der Komponenten-Schlüssel gelöscht werden, wenn die Tests beendet sind.
2
let boundSpies = mockFnRegistry.get(Component);
Ruft gecachte Test-Spy-Zuordnungen dynamisch für die gerenderte Zielkomponente ab.
3
const safeProps = { ...props, _harnessId: Symbol('harness') };
Fügt eindeutige Identitäts-Symbole in Props ein, um Zustandskollisionen zwischen Tests zu vermeiden.