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  }