本文是对前几篇文章的一些补充,主要包含两部分:单元测试和实际项目中使用路由的小问题。
拾遗1:单元测试
Golang单元测试要求代码文件以_test结尾,单元测试方法以Test开头,参数为*testing.T类型。以下是一个计算hash值的工具包和对应的单元测试。
hashUtils.go
1 | package utils |
hashUtils_test.go
1 | package utils |
除了测试这种逻辑代码我们还需要测试HTTP的请求响应。Gin推荐使用net/http/httptest测试HTTP相关的代码。
启动一个Gin服务器main.go
1 | package main |
单元测试main_test.go
1 | package main |
拾遗2:路由
先看代码
1 | userRouter := router.Group(`users`) |
我们声明了路由/users/,这是一个Web Api,传入参数的url大概是这样的/users/?pageIndex=1&pageSize=10。用户访问/users?pageIndex=1&pageSize=10时也能正常返回数据,这是因为Gin帮我们做了一次301跳转,问题就出在这里。我们的路由是Web Api用户可能是JS前端,也可能是其他的业务系统。如果用户不支持301跳转呢?
其实我们只要在增加一个空路径路由就可以解决问题。
1 | userRouter := router.Group(`users`) |
现在不管用户访问/users/?pageIndex=1&pageSize=10还是访问/users?pageIndex=1&pageSize=10都会得到正确的结果。