在Golang单元测试中使用数据库实例和截断表

203 阅读1分钟

你可以使用下面的包来创建一个数据库实例,并使用它来截断Golang单元测试中的表的列表:

package test

import (
	"database/sql"
	"fmt"
)

func OpenDB(driver, address string, maxIdleConns int) *sql.DB {
	db, _ := sql.Open(driver, address)
	db.SetMaxIdleConns(maxIdleConns)

	return db
}

func CloseDB(db *sql.DB) {
	_ = db.Close()
}

func TruncateTables(db *sql.DB, tables []string) {
	_, _ = db.Exec("SET FOREIGN_KEY_CHECKS=0;")

	for _, v := range tables {
		_, _ = db.Exec(fmt.Sprintf("TRUNCATE TABLE %s;", v))
	}

	_, _ = db.Exec("SET FOREIGN_KEY_CHECKS=1;")
}

用法

// Obtain a database instance
db := test.OpenDB(// pass arguments here)

// Truncate tables.
test.TruncateTables(db, []string{"table1", "table2", // ....})

// Do something else.

// Close database.
test.CloseDB(db)