go单元测试初始化
- 分类:后端
- 浏览:452
go单元测试会遇到这样的场景: 写好了service层函数getUser()。然后测试测试getUser函数。有个问题是,函数中使用了数据库连接,如果直接测试的话会报错误,比如空指针错误。
panic: runtime error: invalid memory address or nil pointer dereference [recovered] panic: runtime error: invalid memory address or nil pointer dereference [signal 0xc0000005 code=0x0 addr=0xb0 pc=0x167680d]
如果遇到这种情况很有可能就是数据库连接未初始化。但是单元测试并不会主动去初始化数据库连接。不用担心,有办法。 go test提供了用于初始化的方法:TestMain函数。只需要在这个函数中进行数据库初始化,后面需要用的的数据库连接可直接使用,不需要重复初始化。
func TestMain(m *testing.M) {
fmt.Println("begin")
dba, err := gorm.Open("sqlite3", "../../website.db")
db.SQLLite = dba
if err != nil {
panic(err)
}
m.Run()
fmt.Println("end")
}
func TestProjectUsers(t *testing.T) {
userService := user.NewService(db.SQLLite)
users, err := userService.GetProjectUsers(25)
if err != nil {
t.Error(err)
}
t.Log("返回结果:", users)
}
原文链接:https://www.yuedun.wang/blogdetail/5fc7321dc0ec0c27f57ace6e