第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

無(wú)法為 gin web 框架 golang 編寫(xiě)單元測(cè)試

無(wú)法為 gin web 框架 golang 編寫(xiě)單元測(cè)試

Go
寶慕林4294392 2022-06-27 10:01:08
我寫(xiě)了下面的代碼來(lái)測(cè)試一個(gè)函數(shù)func TestServe(t *testing.T) {        config.SetLoggerConfig("logger.apipath")        router := Serve()        w := httptest.NewRecorder()        req, _ := http.NewRequest("GET", "/nodes", nil)        router.ServeHTTP(w, req)        assert.Equal(t, 200, w.Code)}這里 Server() 在我運(yùn)行它時(shí)返回一個(gè)杜松子酒引擎,代碼卡在[GIN-debug] 在 :8080 上監(jiān)聽(tīng)和服務(wù) HTTP如何解決這個(gè)問(wèn)題?我已經(jīng)修改了代碼,但它仍然掛在下面是片段server.go 片段func Serve() *gin.Engine {        logger.Log.Info("Serve()")        r := gin.Default()        r.GET("/ping", func(c *gin.Context) {                c.JSON(200, gin.H{                        "message": "pong",                })        })        r.Use(ginzap.Ginzap(logger.Log, time.RFC3339, false))        r.Use(ginzap.RecoveryWithZap(logger.Log, true))        r.GET("/nodes", listNodes)        r.POST("/uuid", getUUID)        r.GET("/hwstatus/:node_id", getNodeHWStatus)        r.PUT("/hwstatus/:node_id", updateNodeHWStatus)        node := r.Group("/node")        {                node.POST("/", createNode)                node.GET("/:node_id", describeNode)                node.PUT("/:node_id", updateNode)                node.DELETE("/:node_id", deleteNode)                node.POST("/deploy/:node_id", deployNode)        }        if err := r.Run(":8080"); err != nil {                logger.Log.Fatal("Failed to Run Server", zap.Error(err))                //log.Fatalf("Failed to Run server: %v ", err)        }        return r}testing.go 片段如下func TestDescribeNode(t *testing.T) {        config.SetLoggerConfig("logger.apipath")        ts := httptest.NewServer(Serve())        defer ts.Close()        resp, err := http.Get(fmt.Sprintf("%s/node/12334", ts.URL))       if err != nil {        t.Fatalf("Expected no error, got %v", err)    }    if resp.StatusCode != 200 {        t.Fatalf("Expected status code 200, got %v", resp.StatusCode)    }
查看完整描述

1 回答

?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

(您從中調(diào)用的Run)確實(shí)將路由器附加到 a并開(kāi)始偵聽(tīng)和服務(wù) HTTP 請(qǐng)求。它是. 除非發(fā)生錯(cuò)誤,否則它會(huì)無(wú)限期地阻止調(diào)用者。r.Run(":8080")Serve()http.Serverhttp.ListenAndServe(addr, router)


如果你想用這樣的方式創(chuàng)建測(cè)試服務(wù)器,你必須r.Run(":8080")從中取出。例如,您可以像這樣修改代碼:Serve()Serve()httptest.NewServer(Serve())


func Serve() *gin.Engine {

    logger.Log.Info("Serve()")


    r := gin.Default()

    r.GET("/ping", func(c *gin.Context) {

        c.JSON(200, gin.H{

            "message": "pong",

        })

    })

    r.Use(ginzap.Ginzap(logger.Log, time.RFC3339, false))

    r.Use(ginzap.RecoveryWithZap(logger.Log, true))


    r.GET("/nodes", listNodes)

    r.POST("/uuid", getUUID)

    r.GET("/hwstatus/:node_id", getNodeHWStatus)

    r.PUT("/hwstatus/:node_id", updateNodeHWStatus)

    node := r.Group("/node")

    {

        node.POST("/", createNode)

        node.GET("/:node_id", describeNode)

        node.PUT("/:node_id", updateNode)

        node.DELETE("/:node_id", deleteNode)

        node.POST("/deploy/:node_id", deployNode)

    }

    return r

}


func Start() {

    if err := Serve().Run(":8080"); err != nil {

        logger.Log.Fatal("Failed to Run Server", zap.Error(err))

        //log.Fatalf("Failed to Run server: %v ", err)

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-06-27
  • 1 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)