name: db-infra-mocks description: Propose minimal seams and local substitutes so tests run without real RDBMS/Redis/Mongo infrastructure. license: MIT metadata: mode: design purpose: infra
DB Infrastructure Mocks
When to Use
- Integration dependencies (RDBMS, Redis, MongoDB) prevent running tests or local development and you need safe, testable alternatives.
Responsibilities
- Locate where clients and connections are constructed and consumed (
database/package). - Propose interface-based seams and minimal mock implementations.
- Provide migration path and verification steps so production behavior remains unchanged.
Rules
- Prefer small interfaces and constructor injection over large refactors.
- Make tests deterministic and avoid network calls.
- Provide unit and integration verification steps for any change.
Project-Specific Details
- RDBMS connections:
gdb.InitDB()/gdb.GetDB()(GORM*gorm.DB). - Redis connections:
gdb.InitRedis()/gdb.GetRedis()(radix v4radix.Client). - MongoDB connections:
gdb.InitMongo()/gdb.GetMongo()(*mongo.Clientfrom official driver v2). - Close all:
gdb.CloseAllDB().
Recommended Approaches
- RDBMS: Use SQLite in-memory (
driver: "sqlite3") for simple GORM-backed tests. - Redis: Use a radix v4 compatible mock or inject an interface wrapper around
radix.Client. - MongoDB: Inject a mock repository interface or use a local test MongoDB instance.
Output
- Dependency map with
path:lineof client construction and usage. - Recommended seam (interface signature) and where to inject it.
- Example mock/test code snippet and verification commands.
Related Skills
test-runner,patch-applier,migration-helper