package testutil import ( "platform/pkg/orm" q "platform/web/queries" "testing" "github.com/DATA-DOG/go-sqlmock" "gorm.io/driver/postgres" "gorm.io/gorm" ) // SetupDBTest 创建一个带有 sqlmock 的 GORM 数据库连接 func SetupDBTest(t *testing.T) sqlmock.Sqlmock { // 创建 sqlmock db, mock, err := sqlmock.New() if err != nil { t.Fatalf("创建sqlmock失败: %v", err) } // 配置 gorm 连接 gormDB, err := gorm.Open(postgres.New(postgres.Config{ Conn: db, PreferSimpleProtocol: true, // 禁用 prepared statement 缓存 }), &gorm.Config{}) if err != nil { t.Fatalf("gorm 打开数据库连接失败: %v", err) } q.SetDefault(gormDB) orm.DB = gormDB // 使用 t.Cleanup 确保测试结束后关闭数据库连接 t.Cleanup(func() { db.Close() }) return mock }