小编mol*_*ier的帖子

如何使用 GORM 创建或更新记录?

Gorm 有一个FirstOrCreate方法和一个FirstOrInit但是之后如何检查记录是否实际创建?如果它不存在,我喜欢创建一个记录,如果它存在,我想更新一些字段。

orm go go-gorm

12
推荐指数
2
解决办法
4万
查看次数

在使用net/http/httptest时,Golang测试基于gin的REST API没有获取参数

我正在开发基于Gin golang的REST API,端点如下所示:

func carsByType(c *gin.Context) {
    fmt.Println("Go Request in Handler...")
    carType := c.Params.ByName("type")
    fmt.Println(carType)
    if carType != "" {

    }
    c.JSON(http.StatusBadRequest, gin.H{"result": "Bad request"})
    return
}

func main() {
    router := gin.Default()
    router.GET("/cars/:type", carsByType)
    router.Run(":80")
}
Run Code Online (Sandbox Code Playgroud)

当我通过浏览器和cURL向端点发出请求时,它正常工作,获取carType值,但是当我运行测试时,返回的错误请求和获取carType为"".

为了测试端点,我的测试代码如下所示:

func TestGetcarsByType(t *testing.T) {
    gin.SetMode(gin.TestMode)
    handler := carsByType
    router := gin.Default()
    router.GET("/cars/1", handler)

    req, err := http.NewRequest("GET", "/cars/1", nil)
    if err != nil {
        fmt.Println(err)
    }
    resp := httptest.NewRecorder()
    router.ServeHTTP(resp, req)
    assert.Equal(t, resp.Code, 200)
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

testing rest go go-gin

6
推荐指数
1
解决办法
2437
查看次数

标签 统计

go ×2

go-gin ×1

go-gorm ×1

orm ×1

rest ×1

testing ×1