javascript / expert
Snippet
Strombasiertes Test-Reporter-Engine-Design basierend auf node:test Lifecycle
Das Node.js-Kernframework node:test exportiert Lifecycle-Event-Streams, die durch benutzerdefinierte Transform-Stream-Instanzen geleitet werden können, um individuelle Test-Runner und Reporter zu bauen. Durch Verarbeitung von Objektmodus-Stream-Chunks (test:pass, test:fail) verarbeiten Reporter Diagnosetelemetrie sauber ohne externe Bibliotheks-Overhead.
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
import { Transform } from 'node:stream';import { run } from 'node:test';class TestSummaryReporter extends Transform {constructor() {super({ writableObjectMode: true });this.passed = 0;this.failed = 0;}_transform(event, encoding, callback) {if (event.type === 'test:pass') this.passed++;if (event.type === 'test:fail') this.failed++;callback();}_flush(callback) {this.push(`Test Summary -> Passed: ${this.passed}, Failed: ${this.failed}\n`);callback();}}const reporter = new TestSummaryReporter();reporter.on('data', chunk => console.log(chunk.toString()));run({ files: [] }).compose(reporter);
nodejs
Erklärung
1
class TestSummaryReporter extends Transform {
Erweitert den nativen Node.js Transform-Stream zur Verarbeitung von Stream-Events im Objektmodus.
2
_transform(event, encoding, callback) {
Fängt strukturierte Test-Lifecycle-Events ab, die vom node:test Ausführungsstrom gesendet werden.
3
run({ files: [] }).compose(reporter);
Verbindet den event-basierten Ausführungsstrom von node:test direkt mit der benutzerdefinierten Transformations-Pipeline.