使用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())
测试用例本身运行良好。但这是因为我仅在执行查询时测试是否有错误。我实际上要检查的是确保
account-uuid-2
和home-uuid-2
我认为rows
对象可能会给我正确的信息。但事实并非如此,测试该方法的正确方法应该是什么?