Test DB Overview
Isolated Environment
Separate from productionSafe testing
Auto Rollback
Transaction-basedAuto cleanup after tests
Fixture Support
Copy real dataConsistent test environment
Easy Initialization
Single command setupAuto schema copy
DB Structure
Sonamu uses multiple databases: Roles:- development_master: DB used during development
- fixture: Stores common data for testing (team shareable)
- test: DB where actual tests run (transaction-based)
DB Configuration
sonamu.config.json
testandproduction_mastermust never use the same DB- Sonamu automatically validates this during initialization
Fixture Initialization
pnpm sonamu fixture init
Copies the development DB schema to Fixture DB and Test DB.-
Development DB Dump
-
Create Fixture DB
-
Create Test DB
- Fixture DB: Empty schema (add data later)
- Test DB: Empty schema (sync from Fixture per test)
Execution Example
Skip Condition
Skips Test DB creation if Fixture DB and Test DB are the same:Test DB Operation
Transaction-Based
Each test runs in an isolated Transaction:Benefits
Isolation:- No actual DELETE β just ROLLBACK
- Saves DB cleanup time
Best Practices
1. DB Separation
2. Shared Fixture DB
Team can maintain consistent test environment by using the same Fixture DB:3. Regular Initialization
Re-initialize Fixture when schema changes:Troubleshooting
Connection Failed
- Check if PostgreSQL server is running
- Verify connection info in
sonamu.config.json