You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用testify测试Gin API返回404响应码,正常运行接口可访问

问题根因

你测试代码中初始化的是空白的Gin路由实例,没有注册业务代码中定义的/api/v1/statistics/projects接口路由,请求找不到对应处理逻辑就会返回404。而你正常启动服务时,已经把所有业务路由注册到了路由实例上,所以可以通过curl、浏览器正常访问。

修复方案

  • 第一步:复用项目中已完成业务路由注册的路由初始化方法,不要在测试代码中单独创建空白路由实例。
    通常项目中会封装统一的路由初始化函数,用于服务启动时注册所有接口,示例如下:
    // 项目原有路由初始化逻辑,正常启动服务时会调用该方法
    func SetupRouter() *gin.Engine {
        r := gin.Default()
        v1Group := r.Group("/api/v1")
        {
            statGroup := v1Group.Group("/statistics")
            // 此处已注册你要测试的目标接口
            statGroup.GET("/projects", getProjectsHandler)
        }
        return r
    }
    
  • 第二步:修改测试代码中的路由初始化逻辑,将原来的router := gin.Default()替换为调用上述路由初始化方法,获取已注册所有接口的路由实例:
    // 替换原有空白路由初始化代码
    router := SetupRouter()
    
  • 第三步(可选优化):你的测试代码当前仅打印响应码和预期返回体,建议补充断言逻辑完成完整的测试校验,示例如下:
    // 校验响应码符合预期
    assert.Equal(suite.T(), http.StatusOK, recorder.Code)
    // 校验返回体内容符合预期
    assert.JSONEq(suite.T(), string(respBody), recorder.Body.String())
    

内容的提问来源于stack exchange,提问作者ZPascal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:21:02