尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Go-轻松搞定单测从httptest到testify的高级实战

Go-轻松搞定单测从httptest到testify的高级实战 Go-Go-轻松搞定单测从httptest到testify的高级实战文章导语单元测试是Go代码的身份证。Go内置的testing包加上httptest、testify能构建完整的测试体系。本文深入HTTP测试、数据库Mock、异步测试等高级场景。一、HTTP测试funcTestGetUser(t*testing.T){router:setupRouter()req:httptest.NewRequest(GET,/users/1,nil)w:httptest.NewRecorder()router.ServeHTTP(w,req)assert.Equal(t,200,w.Code)varresp APIResponse json.Unmarshal(w.Body.Bytes(),resp)assert.Equal(t,0,resp.Code)}二、数据库Mockimportgithub.com/DATA-DOG/go-sqlmockfuncTestUserRepo(t*testing.T){db,mock,_:sqlmock.New()deferdb.Close()rows:sqlmock.NewRows([]string{id,name}).AddRow(1,test)mock.ExpectQuery(SELECT).WillReturnRows(rows)repo:NewUserRepo(db)user,err:repo.FindByID(1)assert.NoError(t,err)assert.Equal(t,test,user.Name)}三、全文总结httptest测试HTTP Handlersqlmock Mock数据库testify提供断言和Mock子测试(Subtest)组织测试用例。参考文献Go testing包文档testify: https://github.com/stretchr/testifysqlmock: https://github.com/DATA-DOG/go-sqlmock
返回列表