Files
platform/pkg/testutil/db.go

41 lines
825 B
Go
Raw Normal View History

2025-04-01 11:32:17 +08:00
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
}