javascript / expert
Snippet
Interzeption privater Klassenfelder für Unit-Tests von Next.js Server Actions
Kombiniert private OOP-Klassenfelder mit dynamischen JavaScript-Proxy-Traps, um isolierte Unit-Test-Container für die Zustandsvalidierung von Next.js Server Actions zu erstellen.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class ServerActionState {#executionToken;constructor(token) {this.#executionToken = token;}executeAction(payload) {if (!this.#executionToken) {throw new Error('Invalid token');}return { success: true, payload };}}export function createActionTestContainer(token) {const instance = new ServerActionState(token);return new Proxy(instance, {get(target, prop, receiver) {if (prop === 'hasToken') {return Reflect.has(target, prop) || token !== null;}const val = Reflect.get(target, prop, receiver);return typeof val === 'function' ? val.bind(target) : val;}});}
nextjs
Erklärung
1
class ServerActionState {
Kapselt den serverseitigen Action-Kontext innerhalb einer Domänenklasse.
2
#executionToken;
Verwendet strikte private Felder, um die Kapselung sensibler Tokens zu garantieren.
3
return new Proxy(instance, {
Ummantelt die Instanz mit einem Proxy, um Eigenschaftszugriffe während der Unit-Test-Verifizierung zu intercepten.
4
const val = Reflect.get(target, prop, receiver);
Nutzt die Reflect-API, um die korrekte Kontextbindung beim Aufruf von Zielmethoden aufrechtzuerhalten.