"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo probar servidores HTTP con solicitudes en vivo en Go?

¿Cómo probar servidores HTTP con solicitudes en vivo en Go?

Publicado el 2024-11-09
Navegar:591

How to Test HTTP Servers with Live Requests in Go?

Probar servidores HTTP con solicitudes en vivo en Go

Las pruebas unitarias de controladores de forma aislada son esenciales, pero pueden pasar por alto los efectos del enrutamiento y otro middleware . Para realizar una prueba completa, considere utilizar un enfoque de "servidor en vivo".

Prueba de servidor en vivo con httptest.Server

El tipo net/http/httptest.Server facilita el uso en vivo. pruebas del servidor. Crea un servidor utilizando el controlador proporcionado (en este caso, un enrutador Gorilla mux). Aquí hay un ejemplo:

func TestIndex(t *testing.T) {
  // Create server using the router initialized elsewhere.
  ts := httptest.NewServer(router)
  defer ts.Close()

  newreq := func(method, url string, body io.Reader) *http.Request {
    r, err := http.NewRequest(method, url, body)
    if err != nil {
        t.Fatal(err)
    }
    return r
  }

  tests := []struct {
    name string
    r    *http.Request
  }{
    // Test GET and POST requests.
    {name: "1: testing get", r: newreq("GET", ts.URL "/", nil)},
    {name: "2: testing post", r: newreq("POST", ts.URL "/", nil)}, // reader argument required for POST
  }
  for _, tt := range tests {
    t.Run(tt.name, func(t *testing.T) {
        resp, err := http.DefaultClient.Do(tt.r)
        defer resp.Body.Close()
        if err != nil {
            t.Fatal(err)
        }
        // check for expected response here.
    })
  }
}

Tenga en cuenta que httptest.Server se puede utilizar para probar cualquier controlador que satisfaga la interfaz http.Handler, no solo Gorilla mux.

Consideraciones

Si bien las pruebas de servidores en vivo proporcionan una prueba más realista, también pueden ser más lentas y consumir más recursos que las pruebas unitarias. Considere una combinación de pruebas unitarias y de integración para una estrategia de prueba integral.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3