[英]How to use go-sqlmock when I have concurrent query in my program?
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。
MatchExpectationsInOrder
方法完全禁用这种情况下的顺序检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.