Test DB Overview
Isolated Environment
Separate from production Safe testing
Auto Rollback
Transaction-based Auto cleanup after tests
Fixture Support
Copy real data Consistent test environment
Easy Initialization
Single command setup Auto schema copy
DB Structure
Sonamu uses multiple databases: Roles:- development: 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
testandproductionmust 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
Permission Error
DB Already Exists
Cautions
Next Steps
Creating Fixtures
Writing fixture.ts
Loading Fixtures
Import production data
Syncing Fixtures
Fixture → Test DB
Writing Tests
Understanding test structure