javascript / expert
Snippet
Class-Based Header Assertion Spy for Next.js Middleware Testing
This expert testing pattern utilizes ECMAScript private fields inside an Object-Oriented Spy class to capture and validate HTTP header mutations emitted by Next.js middleware functions without relying on external mocking libraries.
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
Breakdown
1
class HeaderSpy {
Defines an Object-Oriented testing class to encapsulate state and assertions.
2
#captured = new Map();
Declares a private ECMAScript field to isolate header recording state from public access.
3
record(request) {
Iterates and stores incoming response headers in normalized lowercase key format.
4
assertHeaderEquals(key, expected) {
Verifies that the stored header matches the expected value and throws on failure.