javascript / expert
Snippet
Deterministisches Zeitreise-Testing mit node:test-Mocking-Utilities
Das Testen von zeitverzögerten Callbacks kann Nicht-Determinismus erzeugen und Testsuiten verlangsamen. Mit den nativen Test-Runner-Mocks in Node.js (t.mock.timers) lässt sich die virtuelle Uhr synchron vorspulen, ohne reale Wartezeiten zu erzeugen.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
import { test } from 'node:test';import assert from 'node:assert';test('advances timer deterministically', (t) => {t.mock.timers.enable({ apis: ['setTimeout', 'Date'] });let executed = false;setTimeout(() => { executed = true; }, 5000);t.mock.timers.tick(5000);assert.strictEqual(executed, true);});
nodejs
Erklärung
1
t.mock.timers.enable({ apis: ['setTimeout', 'Date'] });
Ersetzt native Zeit-APIs durch Mock-Timer im Kontext des Tests.
2
setTimeout(() => { executed = true; }, 5000);
Plant einen verzögerten Callback ohne echtes Warten des Prozesses.
3
t.mock.timers.tick(5000);
Rückt die interne Mock-Uhr synchron um 5000 Millisekunden vor.
4
assert.strictEqual(executed, true);
Überprüft die unmittelbare synchrone Ausführung des getimten Callbacks.