0

我尝试使用testify为我的Gin API编写测试。

不幸的是,它在测试中以意外的 HTTP404响应代码进行响应。

当我执行程序时,我可以通过 curl 和浏览器到达相应的界面。

为什么我的测试失败了?

测试代码:

func (suite *statisticTestSuite) TestGetProjects() {
    suite.T().Log("TestGetAllProjects")

    recorder := httptest.NewRecorder()

    router := gin.Default()

    request, err := http.NewRequest(http.MethodGet, "/api/v1/statistics/projects", nil)
    request.Header = http.Header{"Content-Type": []string{"application/json"}}

    assert.NoError(suite.T(), err)

    router.ServeHTTP(recorder, request)

    data := make(map[string]interface{})
    data["projects"] = 3

    respBody, err := json.Marshal(gin.H{
        "code": 200,
        "msg":  "ok",
        "data": data,
    })

    fmt.Println(recorder.Code)
    fmt.Println(respBody)
}
4

1 回答 1

2

您创建一个没有任何句柄的路由器。添加router.GET("/api/v1/statistics/projects", your handleFunc)

或者

func TestHandle(t *testing.T) {
    recorder := httptest.NewRecorder()
    c, _ := gin.CreateTestContext(recorder)

    yourHandleFunc(c)

    fmt.Println(recorder.Code)

}
于 2021-09-02T01:27:32.620 回答