41 lines
825 B
Go
41 lines
825 B
Go
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
|
|
}
|