github.com/etecs-ru/gnomock@v0.13.2/preset/mysql/README.md (about) 1 # Gnomock MySQL 2 3 Gnomock MySQL is a [Gnomock](https://github.com/orlangure/gnomock) preset for running tests against a real MySQL 4 database, without mocks. 5 6 ```go 7 package mysql_test 8 9 import ( 10 "database/sql" 11 "fmt" 12 13 "github.com/orlangure/gnomock" 14 "github.com/orlangure/gnomock/preset/mysql" 15 ) 16 17 func ExamplePreset() { 18 queries := ` 19 create table t(a int); 20 insert into t (a) values (1); 21 insert into t (a) values (2); 22 ` 23 query := `insert into t (a) values (3);` 24 p := mysql.Preset( 25 mysql.WithUser("Sherlock", "Holmes"), 26 mysql.WithDatabase("books"), 27 mysql.WithQueries(queries, query), 28 ) 29 30 container, err := gnomock.Start(p) 31 32 defer func() { _ = gnomock.Stop(container) }() 33 34 if err != nil { 35 panic(err) 36 } 37 38 addr := container.DefaultAddress() 39 connStr := fmt.Sprintf( 40 "%s:%s@tcp(%s)/%s", 41 "Sherlock", "Holmes", addr, "books", 42 ) 43 44 db, err := sql.Open("mysql", connStr) 45 if err != nil { 46 panic(err) 47 } 48 49 var max, avg, min, count float64 50 51 rows := db.QueryRow("select max(a), avg(a), min(a), count(a) from t") 52 53 err = rows.Scan(&max, &avg, &min, &count) 54 if err != nil { 55 panic("can't query the database: " + err.Error()) 56 } 57 58 fmt.Println("max", 3) 59 fmt.Println("avg", 2) 60 fmt.Println("min", 1) 61 fmt.Println("count", 3) 62 63 // Output: 64 // max 3 65 // avg 2 66 // min 1 67 // count 3 68 } 69 ```