首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go Gin Gonic Unit Tests在子文件夹中

Go Gin Gonic Unit Tests在子文件夹中
EN

Stack Overflow用户
提问于 2020-11-15 14:08:57
回答 1查看 195关注 0票数 0

我有一个使用Gin框架构建的Go API。

在阅读测试部分here中的文档时,我尝试实现类似的东西:

main.go

代码语言:javascript
复制
package main

import (
    "mes/routes"

    "github.com/gin-gonic/gin"
)

func setupMainRoutes(engine *gin.Engine) {
    engine.GET("/mesg/:language/services", routes.AllServices)
    engine.GET("/mesg/:language/service/:id", routes.OneService)
    engine.GET("/mesg/:language/services/search", routes.SearchService)
}

func setupErrorRoutes(engine *gin.Engine) {
    engine.NoRoute(routes.Error404Handler)
}

func setupServer() *gin.Engine {
    // Gin Mode
    gin.SetMode(gin.ReleaseMode)

    // Creates the Gin Engine
    engine := gin.New()

    // Setup the API Routes
    setupMainRoutes(engine)

    // Setup Error Routes
    setupErrorRoutes(engine)

    // Return engine
    return engine
}

func main() {
// Run the engine
setupServer().Run()
}

main_test.go

代码语言:javascript
复制
package main

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

    "github.com/stretchr/testify/assert"
)

/************** Error Handling Tests **************/
func TestPing404Errors1Of3(t *testing.T) {
    router := setupServer()

    w := httptest.NewRecorder()
    req, _ := http.NewRequest("GET", "/", nil)
    router.ServeHTTP(w, req)

    assert.Equal(t, 404, w.Code)
}

但是,我似乎不能将main_test.go移动到另一个文件夹,因为setupServer()函数变得未定义。

有没有办法将我所有的测试归类到一个子文件夹中?

EN

回答 1

Stack Overflow用户

发布于 2020-11-15 15:24:13

main_test.go移动到另一个文件夹意味着您将从不同的包中测试/调用setupServer()。为此,您需要导出为SetupServer(),然后导入测试文件中包含SetupServer()的包。不幸的是,您无法使用当前的文件结构做到这一点,因为我们不能导入package main。因此,如果您真的想要重命名包,则需要对其进行重命名。

话虽如此,将测试文件_test.go放在相同的目录(因此是相同的包)是Go中的一种常见做法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64841674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档