github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/routers/main_test.go (about) 1 package routers 2 3 import ( 4 "database/sql" 5 "testing" 6 7 "github.com/DATA-DOG/go-sqlmock" 8 model "github.com/cloudreve/Cloudreve/v3/models" 9 "github.com/gin-gonic/gin" 10 "github.com/jinzhu/gorm" 11 ) 12 13 var mock sqlmock.Sqlmock 14 var memDB *gorm.DB 15 var mockDB *gorm.DB 16 17 // TestMain 初始化数据库Mock 18 func TestMain(m *testing.M) { 19 // 设置gin为测试模式 20 gin.SetMode(gin.TestMode) 21 22 // 初始化sqlmock 23 var db *sql.DB 24 var err error 25 db, mock, err = sqlmock.New() 26 if err != nil { 27 panic("An error was not expected when opening a stub database connection") 28 } 29 30 // 初始话内存数据库 31 model.Init() 32 memDB = model.DB 33 34 mockDB, _ = gorm.Open("mysql", db) 35 model.DB = memDB 36 defer db.Close() 37 38 m.Run() 39 } 40 41 func switchToMemDB() { 42 model.DB = memDB 43 } 44 45 func switchToMockDB() { 46 model.DB = mockDB 47 }