sqlmock

update

func TestUpdateCompHisStatusById(t *testing.T) {
	comp := model.Component{
		ID:             1293,
		ExtraInfoData:  "{\"image_url\": \"\", \"config\": {}, \"multi_field\": [\"show_after_loop\", \"show_seconds\"], \"format\": 0}",
		GroupId:        0,
		Type:           5,
		RitId:          10000001,
		Name:           "1",
		Filters:        "[]",
		SupportVersion: "[[{\"type\": \"platform_id\", \"value\": 1, \"condition\": \"==\"}, {\"type\": \"app_version\", \"value\": \"0.0.0\", \"condition\": \">=\"}], [{\"type\": \"platform_id\", \"value\": 2, \"condition\": \"==\"}, {\"type\": \"app_version\", \"value\": \"0.0.0\", \"condition\": \">=\"}], [{\"type\": \"platform_id\", \"value\": 4, \"condition\": \"==\"}, {\"type\": \"app_version\", \"value\": \"0.0.0\", \"condition\": \">=\"}]]",
		Status:         3,
		CreateTime:     1659670886,
		UpdateTime:     1659670886,
		Creator:        "hanyizhen,shiwenkang.12138",
		DrawType:       0,
		Priority:       "[1024]",
	}

	compHis := model.CompHistory{
		ID:          381,
		ComponentId: 1293,
		Status:      3,
		Data:        "{\"created_time\":1659670886,\"creator\":\"hanyizhen,shiwenkang.12138\",\"extra_info_data\":{\"config\":{},\"format\":0,\"image_url\":\"\",\"multi_field\":[\"show_after_loop\",\"show_seconds\"]},\"filters\":[],\"id\":1293,\"name\":\"1\",\"priority\":[1024],\"rit_id\":10000001,\"status\":3,\"support_version\":[[{\"condition\":\"==\",\"type\":\"platform_id\",\"value\":1},{\"condition\":\"\\u003e=\",\"type\":\"app_version\",\"value\":\"0.0.0\"}],[{\"condition\":\"==\",\"type\":\"platform_id\",\"value\":2},{\"condition\":\"\\u003e=\",\"type\":\"app_version\",\"value\":\"0.0.0\"}],[{\"condition\":\"==\",\"type\":\"platform_id\",\"value\":4},{\"condition\":\"\\u003e=\",\"type\":\"app_version\",\"value\":\"0.0.0\"}]],\"type\":5,\"updated_time\":1659670886}",
		Version:     6,
		CreateTime:  1659670988,
		Operator:    "shiwenkang.12138",
	}

	// mock一个*sql.DB对象,不需要连接真实的数据库
	db, mock, err := sqlmock.New()
	if err != nil {
		t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
	}
	defer db.Close()

	// mock执行指定SQL语句时的返回结果
	mock.ExpectBegin()
	mock.ExpectExec("UPDATE `api_component_version` .* ").
		WillReturnResult(sqlmock.NewResult(1, 1))
	mock.ExpectCommit()

	gormDB, err := gorm.Open(mysql.New(mysql.Config{
		SkipInitializeWithVersion: true,
		Conn:                      db,
	}), &gorm.Config{})

	if err != nil {
		t.Fatalf("Init DB with sqlmock failed, err %v", err)
	}

	// 将mock的DB对象传入我们的函数中
	res, err := UpdateCompHisStatusById(context.Background(), gormDB, comp, compHis, 1, 10)
	assert.NotNil(t, res)
	assert.Nil(t, err)
	assert.Equal(t, int64(10), res.Status)
}```

## select

```go
func TestGetCompHisByCompIdAndVersionAndStatus(t *testing.T) {

	// mock一个*sql.DB对象,不需要连接真实的数据库
	db, mock, err := sqlmock.New()
	if err != nil {
		t.Fatalf("an error '%s' was not expected when opening a stub database connection", err)
	}
	defer db.Close()

	rows := sqlmock.NewRows(
		[]string{"id", "component_id", "status", "data", "version", "created_time", "operator"},
	).AddRow([]driver.Value{1293, 1293, 10, "data", 1, 1659670988, "shiwenkang.12138"}...)

	// mock执行指定SQL语句时的返回结果
	mock.ExpectQuery("SELECT .*").WillReturnRows(rows)

	gormDB, err := gorm.Open(mysql.New(mysql.Config{
		SkipInitializeWithVersion: true,
		Conn:                      db,
	}), &gorm.Config{})

	if err != nil {
		t.Fatalf("Init DB with sqlmock failed, err %v", err)
	}

	// 将mock的DB对象传入我们的函数中
	res, err := GetCompHisByCompIdAndVersionAndStatus(context.Background(), gormDB, 1293, 1, 10)
	assert.NotNil(t, res)
	assert.Equal(t, int64(1), res.Version)
	assert.Equal(t, int64(10), res.Status)
	assert.Equal(t, int64(1293), res.ComponentId)
	assert.Nil(t, err)
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值