typescript / intermediate
Snippet
Erstellung typsicherer Test-Doubles mit Spy-Schnittstellen
Das Erstellen von Test-Doubles durch Implementieren von Domänen-Schnittstellen ermöglicht Unit-Tests ohne externe Mocking-Frameworks. Die Mock-Klasse zeichnet Aufrufparameter für Assertionen auf und erfüllt gleichzeitig Standard-Schnittstellen.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
interface DataStore {save(key: string, value: string): void;find(key: string): string | null;}class MockDataStore implements DataStore {public saveCalls: Array<{ key: string; value: string }> = [];private storage = new Map<string, string>();save(key: string, value: string): void {this.saveCalls.push({ key, value });this.storage.set(key, value);}find(key: string): string | null {return this.storage.get(key) ?? null;}}const mockStore = new MockDataStore();mockStore.save("user_101", "Active");console.assert(mockStore.saveCalls.length === 1, "Should record one save call");
Erklärung
1
interface DataStore {
Definiert den Vertrag, der von der Produktionslogik für Speicheroperationen benötigt wird.
2
class MockDataStore implements DataStore {
Implementiert die Schnittstelle in einer eigenen Test-Double-Klasse.
3
public saveCalls: Array<{ key: string; value: string }> = [];
Speichert den Aufrufverlauf für Überprüfungen in Unit-Tests.
4
console.assert(mockStore.saveCalls.length === 1, "Should record one save call");
Überprüft mit Standard-Werkzeugen, ob das Mock-Objekt die Interaktion korrekt aufgezeichnet hat.