Skip to content
NeuralSkills
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 hinzufuegenuserFactory.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.