javascript / expert
Snippet
Fortgeschrittenes Dependency-Mocking mit node:test
Node.js 20+ enthält ein integriertes Mock-Objekt im Test-Runner-Kontext. Es ermöglicht das Spionieren und Stubben von Methoden direkt auf Systemmodulen oder Objekten, ohne externe Bibliotheken wie Sinon oder Jest zu benötigen, was den Test-Overhead reduziert.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
import test from 'node:test';import assert from 'node:assert';import fs from 'node:fs';test('mocking fs.readFile', async (t) => {t.mock.method(fs, 'readFile', (path, cb) => {cb(null, Buffer.from('mocked content'));});fs.readFile('real.txt', (err, data) => {assert.strictEqual(data.toString(), 'mocked content');});});
nodejs
Erklärung
1
test('mocking fs.readFile', async (t) => {
Der Test-Kontext 't' bietet Zugriff auf das Mocking-Programm.
2
t.mock.method(fs, 'readFile', (path, cb) => {
Fängt Aufrufe der 'readFile'-Methode auf dem globalen 'fs'-Objekt ab.
3
cb(null, Buffer.from('mocked content'));
Simuliert ein erfolgreiches asynchrones Auslesen einer Datei mit eigenen Daten.
4
assert.strictEqual(data.toString(), 'mocked content');
Überprüft, ob der zu testende Code korrekt mit unserem Mock interagiert hat.