如何检查已更新多少行

时间:2019-04-22 19:34:18

标签: go testing mocking

使用Go可以节省时间,所以有点卡住了。我正在使用sqlmock模拟查询。这是我设置的方式

ctx := context.Background()
db, mock, _ := sqlmock.New()
rows := sqlmock.NewRows([]string{"account_id", "home_id", "zip_code"}).
    AddRow("account-uuid-1", "home-uuid-1", "xxxx").
    AddRow("account-uuid-2", "home-uuid-2", "xxxx").
    AddRow("account-uuid-3", "home-uuid-3", "xxxx")
mock.ExpectExec(
    regexp.QuoteMeta(MyQuery)).
    WithArgs("DDDD", "account-uuid-2", "home-uuid-2").
    WillReturnResult(sqlmock.NewResult(0, 1))

account := Account {
    AccountID: "account-uuid-2",
    HomeID: "home-uuid-2",
    Zipcode: models.JsonNullString{Value: sql.NullString{String: "DDDD", Valid: true}},
}

err := account.UpdateAccountZipCode(ctx, db)
assert.Nil(t, err)
print (rows)
assert.Nil(t, mock.ExpectationsWereMet())

测试用例本身运行良好。但这是因为我仅在执行查询时测试是否有错误。我实际上要检查的是确保

  1. 仅更新了一行account-uuid-2home-uuid-2
  2. 该行已使用正确的值更新

我认为rows对象可能会给我正确的信息。但事实并非如此,测试该方法的正确方法应该是什么?

0 个答案:

没有答案