我需要为其中一个处理程序编写一个测试.在处理程序中,我有一些类似的东西:

ctx.Params("id")

有没有可能创建一个上下文,使处理程序内部的参数不为零?

我try 使用ctx.route().Params更改参数字段,但不起作用

推荐答案

我认为最好使用(*App).Test,并让它从请求中创建一个上下文.就像这样:

package main

import (
    "fmt"
    "net/http/httptest"
    "testing"

    "github.com/gofiber/fiber/v2"
)

func handler(c *fiber.Ctx) error {
    id := c.Params("id")

    fmt.Println("Params:", id)

    return nil
}

func TestXxx(t *testing.T) {
    app := fiber.New()
    app.Get("/hello/:id", handler)

    req := httptest.NewRequest("GET", "/hello/man", nil)

    _, _ = app.Test(req, -1)
}
$ go test . -v
=== RUN   TestXxx
Params: man
--- PASS: TestXxx (0.00s)
PASS
ok      m       0.002s

Go相关问答推荐

Go -SDP服务器读缓冲区不会更改任何内容

../golang/pkg/mod/github.com/wmentor/lemmas@v0.0.6/processor.go:72:9:未定义:令牌.进程

golang有int32溢出吗?

理解Golang中的IOTA和常量

go中跨域自定义验证的问题

有没有办法让sqlc生成可以使用pgxpool的代码

Go-如何在递归函数中关闭通道

linter 警告:返回值被忽略

我在 go 中制作的递归函数有什么问题?

设置指向空接口的指针

整理时转换值

如何使用 fyne Go 使用 canvas.NewText() 使文本可滚动

如何修改go gin的默认端口?我的 8080 端口正在使用中

Go 泛型:自引用接口约束

使用 Golang SQL 驱动程序连接到snowflake

将未知长度切片的值分配给Go中的 struct ?

为什么 go.mod 中的所有依赖都是间接的?

使用 xml.Name 将 xml 解组为 [] struct

如何在 Gorm 中获得特定日期的最大值?

如何动态解析 Go Fiber 中的请求正文?