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  ```