javascript / expert
Snippet
Klassenbasierter Header-Assertion-Spy für Next.js Middleware-Tests
Mithilfe privater ECMAScript-Felder in einer objektorientierten Spy-Klasse werden HTTP-Header-Mutationen von Next.js-Middleware-Funktionen erfasst und validiert, ohne auf externe Mocking-Bibliotheken angewiesen zu sein.
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
class HeaderSpy {#captured = new Map();record(request) {for (const [key, value] of request.headers.entries()) {this.#captured.set(key.toLowerCase(), value);}}assertHeaderEquals(key, expected) {const actual = this.#captured.get(key.toLowerCase());if (actual !== expected) {throw new Error(`Header mismatch: expected ${expected}, got ${actual}`);}return true;}}export function testMiddlewareHeaders(middlewareFn, mockReq) {const spy = new HeaderSpy();const res = middlewareFn(mockReq);spy.record(res);return spy.assertHeaderEquals('x-custom-tenant', 'acme-prod');}
nextjs
Erklärung
1
class HeaderSpy {
Definiert eine objektorientierte Testklasse zur Kapselung von Zustand und Assertions.
2
#captured = new Map();
Deklariert ein privates ECMAScript-Feld, um den Header-Erfassungszustand vom externen Zugriff zu isolieren.
3
record(request) {
Iteriert über eingehende Response-Header und speichert sie in einem normalisierten Kleinbuchstaben-Format.
4
assertHeaderEquals(key, expected) {
Überprüft, ob der gespeicherte Header mit dem erwarteten Wert übereinstimmt, und wirft bei Nichtübereinstimmung einen Fehler.