我已经查看了文档,但它没有解释设置gin测试模式的用法

gin.SetMode(gin.TestMode)

该测试模式的用途是什么?设置&在我的测试中没有设置此模式.

推荐答案

标志gin.DebugMode用于控制gin.IsDebugging()的输出,这会添加一些额外的日志(log)输出,并将HTML呈现程序更改为调试 struct HTMLDebug.

gin.TestMode用于Gin自己的单元测试,以切换调试模式(以及附加日志(log))的打开和关闭,以及调试HTML呈现程序的使用.

除此之外,它没有其他用途(source).

但是,可以使用环境变量GIN_MODE=test来控制该标志.然后,由于Mode()已导出,您可以在应用程序代码中使用它,例如,声明测试路由.如果您计划运行E2E测试套件或其他一些集成测试,这可能有一些优点:

    r := gin.New()
    if gin.Mode() == gin.TestMode {
        r.GET("/test", func(c *gin.Context) {
            c.String(418, "I don't exist in production")
        })
    }

Go相关问答推荐

为什么工具链指令在这种情况下没有效果?

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

无法在32位计算机上运行Golang应用程序

提供的client_secret与此帐户上任何关联的SetupIntent都不匹配

文件路径.Abs()未在结果中提供子目录

如何确定泛型类型在运行时是否可比较?

Go安装成功但没有输出简单的Hello World

命令行参数在 Golang 程序中不正确地接受为参数

Golang - POST 失败(NoSurf CSRF)

我突然无法再将我的 GoLang 应用程序部署到 Google AppEngine

如何使用 GolangCI 删除未使用的导入

CORS grpc 网关 GoLang

grpc-gateway:重定向与定义不匹配(原始文件)

Golang计算 struct struct 中的字段数

使用 package`regexp` 查找 Golang 中的所有 mactch 子字符串,但得到意外结果

此代码如何生成内存对齐切片?

关系不存在 GORM

GoLang 遍历 yaml 文件

退格字符在围棋操场中不起作用

带有 *s3.S3 对象的 Golang 单元测试