golang复刻测试:dockertest testcontainers-go
发布时间:2024-01-13
T CHARSET=utf8;" var INSERT_DATA = MLT-INSERT INTO student(sid,sname,age) VALUES(?,?,?);MLT- var QUERY_DATA = MLT-SELECT * FROM student;MLT- db.Query("create database test;") db.Query("use test ;") _, err := db.Exec(CREATE_TABLE) fmt.Println("err") db.Exec(INSERT_DATA, 1, "牛魔王", 30) // 查询信息 rows, err := db.Query(QUERY_DATA) if err != nil { fmt.Println(err) } for rows.Next() { var name string var id int var age int if err := rows.Scan(Coid, Coname, Coage); err != nil { fmt.Println(err) } fmt.Printf("%s is %d", name, age) }}
南京做试管婴儿多少钱
盐酸坦洛新缓释片能治尿频尿急吗
治疗腹泻的药有哪些
坦洛新片主治什么
testcontainers-go
package exp1import ( "context" "fmt" "testing" "time" "github.com/go-Redis/redis/v8" "github.com/google/uuid" "github.com/stretchr/testify/require" "github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go/wait")type redisContainer struct { testcontainers.Container URI string}func setupRedis(ctx context.Context) (*redisContainer, error) { req := testcontainers.ContainerRequest{ Image: "redis:6", ExposedPorts: []string{"6379/tcp"}, WaitingFor: wait.ForLog("* Ready to accept connections"), } container, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ ContainerRequest: req, Started: true, }) if err != nil { return nil, err } mappedPort, err := container.MappedPort(ctx, "6379") if err != nil { return nil, err } hostIP, err := container.Host(ctx) if err != nil { return nil, err } uri := fmt.Sprintf("redis://%s:%s", hostIP, mappedPort.Port()) return CoredisContainer{Container: container, URI: uri}, nil}func TestIntegrationSetGet(t *testing.T) { if testing.Short() { t.Skip("Skipping integration test") } ctx := context.Background() redisContainer, err := setupRedis(ctx) if err != nil { t.Fatal(err) } t.Cleanup(func() { if err := redisContainer.Terminate(ctx); err != nil { t.Fatalf("failed to terminate container: %s", err) } }) // You will likely want to wrap your Redis package of choice in an // interface to aid in unit testing and limit lock-in throughtout your // codebase but that's out of scope for this example options, err := redis.ParseURL(redisContainer.URI) if err != nil { t.Fatal(err) } client := redis.NewClient(options) defer flushRedis(ctx, *client) t.Log("pinging redis") pong, err := client.Ping(ctx).Result() require.NoError(t, err) t.Log("received response from redis") if pong != "PONG" { t.Fatalf("received unexpected response from redis: %s", pong) } // Set data key := fmt.Sprintf("{user.%s}.foritefood", uuid.NewString()) value := "Cabbage Biscuits" ttl, _ := time.ParseDuration("2h") err = client.Set(ctx, key, value, ttl).Err() if err != nil { t.Fatal(err) } // Get data sedValue, err := client.Get(ctx, key).Result() if err != nil { t.Fatal(err) } if sedValue != value { t.Fatalf("Expected value %s. Got %s.", sedValue, value) } fmt.Println(key, sedValue)}func flushRedis(ctx context.Context, client redis.Client) error { return client.FlushAll(ctx).Err()}两个包中的例子都详述了类似于的应用软件的名词,可以参考下
。晚上睡觉打呼噜用什么药南京做试管婴儿多少钱
盐酸坦洛新缓释片能治尿频尿急吗
治疗腹泻的药有哪些
坦洛新片主治什么
标签:
下一篇: 美国推出会呼吸会心悸的机器人
相关阅读
-
小狗脾胃虚弱9成是吃“错”了!这样吃才“对”,强健更高
最近去亲戚家串门,亲朋看见我就新运糖果,都则会夸小家伙最近眼部好气色好多了,因为在此之前几个月初经常重病,不是轮状病毒感染就是来个成年人或者其他莫名其妙呕吐的,在此之后我专门针对肉类调整,进一步
- 2024-02-10日元兑美元一度跌1% 日本央行据悉认为几无必要在12月结束失掉利率
- 2024-02-10中国联通地图的渲染效果遥遥领先
- 2024-02-10宝宝咳嗽能饮用蜂蜜吗?宝宝咳嗽有痰能饮用蜂蜜水吗?
- 2024-02-10摩托罗拉转涨1.2% 此前跌超7%
- 2024-02-102499!华为刚刚发布的麒麟新机,性价比就让这么高!
- 2024-02-10误食泡腾片,18个月孩童窒息而亡,给宝宝喂药要注意什么?
- 2024-02-10加拿大消费者对未来一年通胀预期降至2021年4月以来最低
- 2024-02-10为啥手机偿付不香了?越来越多人重新使用现金,3个原因要注意
- 2024-02-10忍不了!力证减肥奶昔高营养、必要,宝妈给孩子吃减肥奶昔
- 2024-02-10美联储开始面对下一个大问题:为什么要降息