2025-12-24 16:03:46 +08:00
|
|
|
package database
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"go.uber.org/zap/zaptest"
|
|
|
|
|
"gorm.io/driver/sqlite"
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// 使用内存 sqlite 验证 AutoMigrate 关键路径,无需真实 Postgres
|
|
|
|
|
func TestAutoMigrate_WithSQLite(t *testing.T) {
|
|
|
|
|
db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("open sqlite err: %v", err)
|
|
|
|
|
}
|
2026-02-25 19:00:50 +08:00
|
|
|
|
|
|
|
|
// 创建临时的 *DB 包装器用于测试
|
|
|
|
|
// 注意:这里不需要真正的连接池功能,只是测试 AutoMigrate
|
|
|
|
|
sqlDB, err := db.DB()
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatalf("get sql.DB err: %v", err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tempDB := &DB{
|
|
|
|
|
DB: db,
|
|
|
|
|
sqlDB: sqlDB,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 保存原始实例
|
|
|
|
|
originalDB := dbInstance
|
|
|
|
|
defer func() { dbInstance = originalDB }()
|
|
|
|
|
|
|
|
|
|
// 替换为测试实例
|
|
|
|
|
dbInstance = tempDB
|
2025-12-24 16:03:46 +08:00
|
|
|
|
|
|
|
|
logger := zaptest.NewLogger(t)
|
|
|
|
|
if err := AutoMigrate(logger); err != nil {
|
|
|
|
|
t.Fatalf("AutoMigrate sqlite err: %v", err)
|
|
|
|
|
}
|
|
|
|
|
}
|