【问题标题】:How to write test for main.go in GoFiber如何在 GoFiber 中为 main.go 编写测试
【发布时间】:2023-01-31 21:38:47
【问题描述】:

下面是我的 main.go 代码

func main() {
    app := fiber.New()

    app.Use(recover.New())
    inferenceController := controllers.InferenceController
    middleware := middleware.Middleware

    privateRoutes := routes.PrivateRoutes{InferenceController: inferenceController,Middleware: middleware }
    privateRoutes.Routes(app)

    log.Fatal(app.Listen(":3000"))
}

我正在尝试测试此代码,但无法找出测试方法

【问题讨论】:

标签: unit-testing go testing go-fiber


【解决方案1】:

在您的测试中,您实际上需要创建应用程序并注册相关的处理程序。然后使用 app.Test() 调用处理程序。您可以根据需要创建正文内容并检查响应代码和正文内容。

在此模型中,您只需使用每个测试用例所需的端点/中间件来设置服务器。如果需要,您可以围绕此提供模拟,具体取决于您的特定用例。

对于你上面的例子,它会像下面这样,不知道你的实际端点是什么:

func TestMyFiberEndpoiunt(t *testing.T) {
    // Setup the app
    app := Fiber.New()
    app.Use(recover.New())
    inferenceController := controllers.InferenceController
    middleware := middleware.Middleware
    privateRoutes := routes.PrivateRoutes{InferenceController: inferenceController,Middleware: middleware }
    privateRoutes.Routes(app)

    // Setup your request body
    reqBody := ReqData{ SomeData: "something" }
    bodyJson, _ := json.Marshal(&reqBody)
    req := httptest.NewRequest("GET", "/api/v1/endpoint", bytes.NewReader(bodyJson))
    resp, _ := app.Test(req, 10)

    // Check the expected response code
    assert.Equal(t, 200, resp.StatusCode)

    // Check the body content
    respBody := make(byte, resp.ContentLength)
    _, _ = resp.Body.read(respBody)
    assert.Equal(t, `{"data":"expected"}`, string(respBody))
}

如果您需要针对某些用例跨多个测试的状态数据,您可以在 TestMain 中使用所有需要的路由设置服务器并将其作为包 var 共享。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2020-12-22
    • 2021-02-03
    相关资源
    最近更新 更多