package integration import ( "testing" "time" "github.com/stretchr/testify/require" "gorm.io/driver/sqlite" "gorm.io/gorm" "nex/backend/internal/config" ) // setupTestDB 创建内存 SQLite 数据库并执行 AutoMigrate。 // 使用 MaxOpenConns(1) 确保 :memory: 模式不会被连接池丢弃。 func setupTestDB(t *testing.T) *gorm.DB { t.Helper() db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{}) require.NoError(t, err) sqlDB, err := db.DB() require.NoError(t, err) sqlDB.SetMaxOpenConns(1) sqlDB.SetConnMaxLifetime(0) err = db.AutoMigrate(&config.Provider{}, &config.Model{}, &config.UsageStats{}) require.NoError(t, err) t.Cleanup(func() { // 等待异步 goroutine(如 statsService.Record)完成 time.Sleep(50 * time.Millisecond) sqlDB.Close() }) return db }