- Startseite
- Skills
- Testen
- Testdaten-Fabrik
Testen
Testdaten-Fabrik
Flexible Testdaten-Fabriken bauen, die realistische, typsichere Fixtures generieren — keine kopierten Mock-Objekte mehr.
Fortgeschritten Kostenlos Veroeffentlicht: 15. April 2026
Kompatible Tools claude-codechatgptgeminicopilotcursorwindsurfuniversal
Das Problem
Jede Testdatei erstellt eigene Mock-Daten — kopierte Objekte mit leichten Variationen, Magic Strings und inkonsistenten Formen. Wenn sich das Datenmodell aendert, muessen Fixtures in dutzenden Dateien aktualisiert werden. Factory-Funktionen loesen dies durch zentralisierte Datenerstellung mit sinnvollen Defaults und einfachen Ueberschreibungen, aber sie von Grund auf fuer jedes Projekt zu bauen ist muehsam.
Der Prompt
Baue ein Testdaten-Factory-System fuer meine Anwendung. Ich brauche wiederverwendbare Factory-Funktionen, die realistische, typsichere Testdaten mit sinnvollen Defaults und einfachen Ueberschreibungen generieren.
DATENMODELLE:
[TypeScript-Interfaces, Zod-Schemas, Prisma-Modelle oder Tabellendefinitionen einfuegen]
ANFORDERUNGEN:
- Sprache: [TypeScript / Python / Go]
- Einschliessen: Sequenzen (auto-inkrementierende IDs), Beziehungen (Benutzer hat viele Bestellungen), Traits (Admin-Benutzer, abgelaufenes Abo)
- Unterstuetzung: partielle Ueberschreibungen (nur angeben, was von Defaults abweicht)
Generieren:
1. **Basis-Factory** — Builder-Pattern mit Chaining, auto-generierten realistischen Defaults, Sequenzen und voller Typsicherheit
2. **Entity-Factories** — Spezifische Factories fuer jedes Datenmodell mit sinnvollen Defaults, benannten Traits und Beziehungs-Buildern
3. **Verwendungsbeispiele** — Zeigen, wie die Factories in tatsaechlichen Tests mit verschiedenen Szenarien eingesetzt werden
Beispielausgabe
const userFactory = createFactory<User>({
defaults: (seq) => ({
id: `usr_${seq}`,
name: `Testbenutzer ${seq}`,
email: `benutzer${seq}@test.com`,
role: 'member',
createdAt: new Date('2026-01-15'),
isActive: true,
}),
traits: {
admin: { role: 'admin' },
inactive: { isActive: false, deactivatedAt: new Date() },
premium: { role: 'member', plan: 'premium' },
},
});
// In Tests:
const admin = userFactory.trait('admin').build();
const inaktiveBenutzer = userFactory.trait('inactive').buildList(5);
Wann verwenden
Einsetzen ab mehr als 3 Testdateien, die Mock-Daten erstellen, wenn Modellaenderungen Fixture-Updates in mehreren Dateien erfordern, oder zu Beginn jedes neuen Projekts.
Profi-Tipps
- Aus dem Schema generieren — Prisma/TypeORM/Zod-Schemas einfuegen und KI bitten, Factories zu generieren, die alle Validierungsregeln automatisch erfuellen.
- Beziehungs-Helfer hinzufuegen —
userFactory.withOrders(3).withAddress().build()erstellt einen Benutzer mit 3 Bestellungen und einer Adresse. - Faker sparsam einsetzen — realistische statische Defaults sind besser debugbar als zufaellige Werte.
- Factories testreifuebergreifend teilen — dieselbe Factory soll in Unit-Tests und Integrationstests funktionieren.