我有一个使用Gin框架构建的Go API。
在阅读测试部分here中的文档时,我尝试实现类似的东西:
main.go
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
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()函数变得未定义。
有没有办法将我所有的测试归类到一个子文件夹中?
发布于 2020-11-15 15:24:13
将main_test.go移动到另一个文件夹意味着您将从不同的包中测试/调用setupServer()。为此,您需要导出为SetupServer(),然后导入测试文件中包含SetupServer()的包。不幸的是,您无法使用当前的文件结构做到这一点,因为我们不能导入package main。因此,如果您真的想要重命名包,则需要对其进行重命名。
话虽如此,将测试文件_test.go放在相同的目录(因此是相同的包)是Go中的一种常见做法。
https://stackoverflow.com/questions/64841674
复制相似问题