为了账号安全,请及时绑定邮箱和手机立即绑定

当我的程序中有并发查询时,如何使用go-sqlmock?

当我的程序中有并发查询时,如何使用go-sqlmock?

Go
米琪卡哇伊 2022-08-15 19:18:25
sqlmock 需要按顺序匹配 SQL。但是,如果我的代码中有并发查询,就像这样:    condition1 := make(map[string]string)    condition2 := make(map[string]string)    var count int64    var user User    var task Task    var wg sync.WaitGroup    wg.Add(3)    wgDone := make(chan interface{})    errCh := make(chan error)    go func(wg *sync.WaitGroup) {        defer wg.Done()        err := conn.Where(condition1).Find(&user).Error        if err != nil {            errCh <- err        }    }(&wg)    go func(wg *sync.WaitGroup) {        defer wg.Done()        err := conn.Where(condition2).Find(&task).Error        if err != nil {            errCh <- err        }    }(&wg)    go func(wg *sync.WaitGroup) {        defer wg.Done()        err := conn.Count(&count).Error        if err != nil {            errCh <- err        }    }(&wg)        go func() {        wg.Wait()        close(wgDone)    }()    select {    case err := <-errCh:        return err    case <-wgDone:        break    }        ...据说我们无法知道SQL的执行顺序。所以我不知道如何使用sqlmock来正确匹配sql。
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

MatchExpectationsInOrder 方法完全禁用此方案的顺序检查。


查看完整回答
反对 回复 2022-08-15
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信