Herkese merhaba!

Uzun yıllardır bol miktarda kişisel zaman ve enerji harcayarak bilgimizi hepinizle paylaşıyoruz. Ancak şu andan itibaren bu blogu çalışır durumda tutabilmek için yardımınıza ihtiyacımız var. Yapmanız gereken tek şey, sitedeki reklamlardan birine tıklamak olacaktır, aksi takdirde hosting vb. masraflar nedeniyle maalesef yayından kaldırılacaktır. Teşekkürler.

Ş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.