DEBUG运行时正常的,
直接运行就在Ping处抛异常
```
import (
"database/sql"
"github.com/agiledragon/gomonkey"
"reflect"
"testing"
)
func TestMysql(t *testing.T) {
db := &sql.DB{}
tp := reflect.TypeOf(db)
patches := gomonkey.ApplyFunc(sql.Open, func(driverName, dataSourceName string) (*sql.DB, error) {
return db, nil
})
patches.ApplyMethod(tp, "Ping", func(db *sql.DB) error {
return nil
})
defer patches.Reset()
db,err := sql.Open("","")
if err != nil {
t.Error(err)
return
}
err = db.Ping() //运行时还是去调用了原本的Ping方法,不知道为什么
if err != nil {
t.Error(err)
return
}
return
}
```
```
C:/Go/src/runtime/panic.go:679 +0x1c0
database/sql.(*DB).conn(0xc000116000, 0xb5cf00, 0xc000018178, 0x88ed01, 0x9cc7e0, 0xac6470, 0x965283)
C:/Go/src/database/sql/sql.go:1228 +0x1e4
database/sql.(*DB).PingContext(0xc000116000, 0xb5cf00, 0xc000018178, 0x0, 0xc000116000)
C:/Go/src/database/sql/sql.go:782 +0x97
database/sql.(*DB).Ping(...)
C:/Go/src/database/sql/sql.go:800
```
有疑问加站长微信联系(非本文作者)