javascript / expert
Snippet
Proxy-Mutationsfalle für Immutabilitäts-Tests in React Hooks
Dieses Snippet erstellt einen rekursiven JavaScript-Proxy-Wrapper für Testumgebungen. Er fängt versuchte Zustandsmutationen in den Rückgabewerten von React-Hooks zur Laufzeit ab und garantiert strikte Objekt-Unveränderlichkeit, indem ein Fehler-Handler bei Property-Setter-Aufrufen ausgelöst wird.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function createImmutableProxy(target, onError) {return new Proxy(target, {get(obj, prop) {const val = Reflect.get(obj, prop);if (val && typeof val === 'object') {return createImmutableProxy(val, onError);}return val;},set(obj, prop, value) {onError(new TypeError(`Direct mutation forbidden on property: ${String(prop)}`));return false;}});}
react
Erklärung
1
return new Proxy(target, {
Erstellt einen Fallen-basierten dynamischen Proxy um das Ziel-Zustandsobjekt.
2
if (val && typeof val === 'object') {
Proxy-umhüllt verschachtelte Objekte rekursiv, um tiefe Unveränderlichkeitsprüfungen durchzuführen.
3
set(obj, prop, value) {
Fängt Schreibzugriffe auf Eigenschaften ab und verhindert eine direkte Mutation des Zustands.
4
onError(new TypeError(...));
Löst einen Laufzeitfehler-Callback aus, sobald gegen die Unveränderlichkeit verstoßen wird.