golang从入门到精通,GinWeb开发,单元测试

时间: 2022-07-27 08:01:13 浏览次数:243

Gin Web开发

demo1/demo1.go源码及解析

package mainimport ("github.com/gin-gonic/gin""log""net/http")func Index(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"id":101,"name":"张三",})}func main() {//gin.Default()返回一个引擎实例,该实例已经连接了记录器和恢复中间件。//gin.Default()实际上进行了3步操作//1. debugPrintWARNINGDefault()//默认的调试打印输出//2. engine := New()//New返回一个新的空白引擎实例,不附带任何中间件。//engine.Use(Logger(), Recovery())//engine.Use将一个全局中间件连接到路由器。//通过Use()连接的中间件将包含在每个请求的处理程序链中。//甚至404、405,静态文件...//Logger()实例一个Logger中间件,它将把日志写到gin.DefaultWriter。//默认情况下是gin.DefaultWriter = os.Stdout。//Recovery()返回一个中间件,它可以从任何panics(恐慌)中恢复过来,如果有500,它会写入500。app := gin.Default()//GET是router.Handle("GET", path, handle)的路由快捷写法。app.GET("/", Index)//app.Run():启用http.Server路由,并开始侦听和服务HTTP请求。err := app.Run(":80")if err != nil {log.Panicln(err.Error())}}

demo1/demo1_test.go单元测试源码及解析

packagemainimport ("github.com/gin-gonic/gin""io/ioutil""log""net/http/httptest""testing")func TestIndex(t *testing.T) {//设置log显示信息格式//log.LstdFlags:表示标准输出 Ldate | Ltime//log.Llongfile:表示输出长文件名和行号log.SetFlags(log.LstdFlags |log.Llongfile)//gin.Default()返回一个引擎实例,该实例已经连接了记录器和恢复中间件。//gin.Default()实际上进行了3步操作//1.debugPrintWARNINGDefault()//默认的调试打印输出//2.engine := New()//New返回一个新的空白引擎实例,不附带任何中间件。//engine.Use(Logger(), Recovery())//engine.Use将一个全局中间件连接到路由器。//通过Use()连接的中间件将包含在每个请求的处理程序链中。//甚至404、405,静态文件...//Logger()实例一个Logger中间件,它将把日志写到gin.DefaultWriter。//默认情况下是gin.DefaultWriter =os.Stdout。//Recovery()返回一个中间件,它可以从任何panics(恐慌)中恢复过来,如果有500,它会写入500。router := gin.Default()//GET是router.Handle("GET",path, handle)的路由快捷写法。router.GET("/", Index)//func NewRequest(methodstring, targetstring, bodyio.Reader) *http.Request//对于http.Handler单元测试,可以使用NewRequest返回一个新的传入服务器请求。//在测试的过程中,当NewRequest发生错误时,会触发panics(恐慌),//method:可以是POST、GET等,默认的就是"GET"//target:可以是路径,也可以是绝对网址。如果目标是绝对网址,则使用该网址的主机名。//body:可以是nil,如果body是*bytes.Reader类型、*strings.Reader类型、*bytes.Buffer,需要设置请求长度。req := httptest.NewRequest("GET","/",nil)//func NewRecorder() *ResponseRecorder//httptest.NewRecorder()将返回一个初始化的ResponseRecorder.w := httptest.NewRecorder()//ServeHTTP通过参数w和req设置HTTP请求router.ServeHTTP(w, req)//w.Result():返回处理程序生成的响应。//返回的响应包括:状态码、标题、正文和可选的尾部。result := w.Result()//result.Body表示响应体。//读取body字段时,响应body将按需流式传输。//如果网络连接失败或服务器终止响应,读取body返回non-nil。//如果服务器用分块传输,body将自动删除。bytes, err := ioutil.ReadAll(result.Body)iferr !=nil{log.Fatalln(err.Error())}log.Println(string(bytes))t.Log(string(bytes))}

  非常感谢您读完蓝港网络的这篇文章:"golang从入门到精通,GinWeb开发,单元测试",仅为提供更多信息供用户参考使用或为学习交流的方便。我们公司提供:网站建设、网站制作、官网建设、SEO优化、小程序制作等服务,欢迎联系我们提供您的需求。

标签:

Copyright © 常州蓝港网络科技有限公司 苏ICP备2022017479号-1