javascript / expert
Snippet
Deterministisches Timer- und Methoden-Mocking mit node:test
Node.js enthält einen nativen Test-Runner mit integrierten Mocking-Utilities. Mit kontextbezogenem t.mock können Sie System-Timer deterministisch steuern und Objektmethoden ohne externe Test-Bibliotheken stubben.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import { test } from 'node:test';import assert from 'node:assert';test('stubs timer and object method', (t) => {t.mock.timers.enable({ apis: ['setTimeout'] });const service = { fetchData: () => 'real data' };t.mock.method(service, 'fetchData', () => 'mocked data');let result = null;setTimeout(() => { result = service.fetchData(); }, 1000);t.mock.timers.tick(1000);assert.strictEqual(result, 'mocked data');});
nodejs
Erklärung
1
t.mock.timers.enable({ apis: ['setTimeout'] });
Aktiviert Mock-Timer speziell f��r setTimeout innerhalb des Testkontexts.
2
t.mock.method(service, 'fetchData', () => 'mocked data');
Überschreibt die Zielmethode der service-Instanz durch eine Spy/Stub-Implementierung.
3
t.mock.timers.tick(1000);
Rückt die virtuelle Uhr manuell um 1000 Millisekunden vor, um geplante Callbacks synchron auszulösen.