Şimdiye kadar Golang testlerinde bir veritabanını taklit etmek zorunda kalmadım, bunun yerine veritabanıyla direkt olarak çalıştım. Bu örnekler bunun nasıl yapılabileceğini göstermektedir. Oldukça hızlı olduğundan, ben şahsen veritabanını taklit etmek ile uğraşmazdım.


Yardımcı


Testiniz için veritabanı örneğini otomatik olarak ayarlamak ve yok etmek için bu yardımcıya sahip olduğunuzu varsayın.


package league

import (
"database/sql"
"fmt"
"os"
"testing"
)

// -----------------------------------------------------------------------------

// Inject this to where it is needed.
var DB *sql.DB

func TestMain(m *testing.M) {
setup()
code := m.Run()
teardown()
os.Exit(code)
}

func setup() {
// Prepare database. You can get these from env vars if you wish.
adr := "user:pass@tcp(0.0.0.0:3306)/sport?charset=utf8mb4&collation=utf8mb4_unicode_ci"
DB, _ := sql.Open("mysql", adr)
DB.SetMaxIdleConns(5)

// Prepare some more dependencies here if you need.

fmt.Printf("\033[1;36m%s\033[0m", "> Setup completed\n")
}

func teardown() {
// Close the database instance.
_ = DB.Close()

// Destroy other dependencies here if you created.

fmt.Printf("\033[1;36m%s\033[0m", "> Teardown completed")
fmt.Printf("\n")
}

Şu andan itibaren, veritabanı örneğine bağlı testlerde DB değişkenini kullanabilirsiniz.