Написание теста для API Gin с использованием результатов подтверждения в коде ответа HTTP 404

# #go #go-gin #testify

Вопрос:

Я попытался написать тест для своего API для джина с помощью testify.

К сожалению, он отвечает неожиданным 404 кодом HTTP-ответа в рамках теста.

Когда я выполняю программу, я могу выйти на соответствующий интерфейс через 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)
}
 

Ответ №1:

Вы создаете маршрутизатор без какой-либо ручки. Добавить 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)

}