测试用例在gin框架中不起作用

I have written test case to test method in Gin-Gonic framework but it in not giving expected output while running test case. But when I run method using API in Postman it is working properly.

Test case

func TestList(t *testing.T) {
    router := gin.New()
    router.GET("/testList", things.List)
    req, _ := http.NewRequest("GET", "/stuff", nil)
    resp := httptest.NewRecorder()
    router.ServeHTTP(resp, req)
    assert.NotNil(t, resp.Body.String())
    assert.Equal(t, 201,resp.Code, resp.Body.String())
}

Method on which test case created

func List(c *gin.Context) {
    db := c.MustGet("db").(*mgo.Database)
    things := []models.Thing{}
    err := db.C(models.CollectionStuff).Find(nil).All(&things)
    if err != nil {
        c.Error(err)
    }
    c.JSON(http.StatusOK, things)
}

Router

func main() {
    router := gin.Default()
    router.Use(middlewares.Connect)
    router.GET(Prefix +"/things", things.List)
}

When I run test case using go test -v ./... Output

 Error Trace:    thing_test.go:31
 Error:          Not equal:
 expected: 201
 actual  : 404
 Test: TestList
 Messages: 404 page not found

While running through API it works but not while running through test case.

dongweng9474
dongweng9474 ....另外请注意,即使您做了其他所有事情,http.StatusOK还是200而不是201,但测试仍然会失败,因为200!=201。
一年多之前 回复
doubei3312
doubei3312 路由器用于路由,即。给定一个请求,路由器决定执行哪个处理程序。在测试中,您在/testList下注册了Things.List处理程序,并使用url路径/stuff创建了一个请求。为什么除了404以外还会有其他期望?测试中的路由器和主路由器中的路由器完全不同,一个路由器具有中间件,另一个路由器则没有,一个在Prefix+/things下注册处理程序,另一个在/testList下注册,这是逻辑上测试不会产生与运行程序时通常使用邮递员发送请求的输出相同。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐