单元测试gomonkey不能替换sql.DB的方法

sdghchj · · 839 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

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 ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

839 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传