📊 Capítulo 15: Testes de Integração com httptest
Especialização Backend com Go & Gin Gonic
🗺️ O Fluxo de Testes HTTP em Memória
flowchart TD
TEST["Função de Teste: TestCriarUsuario(t *testing.T)"]
--> RECORDER["w := httptest.NewRecorder() (Capturador de Resposta)"]
--> REQ["req := httptest.NewRequest('POST', '/api/v1/usuarios', payload)"]
--> ENGINE["router.ServeHTTP(w, req) (Executa a Engine em Memória / Sem subir porta TCP!)"]
--> ASSERT["assert.Equal(t, http.StatusCreated, w.Code)\nassert.JSONEq(t, expected, w.Body.String())"]
style TEST fill:#ede7f6,stroke:#512da8,stroke-width:2px
style RECORDER fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style REQ fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style ENGINE fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style ASSERT fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
🎯 Slide 1: Testando Endpoints com net/http/httptest
func TestHealthCheck(t *testing.T) {
gin.SetMode(gin.TestMode)
r := gin.New()
r.GET("/health", HealthHandler)
req, _ := http.NewRequest("GET", "/health", nil)
w := httptest.NewRecorder()
r.ServeHTTP(w, req)
assert.Equal(t, http.StatusOK, w.Code)
assert.Contains(t, w.Body.String(), "online")
}
🎯 Slide 2: Mocking da Camada Service com testify/mock
- Crie structs de Mock que implementam as interfaces do Service para testar cenários de sucesso, erro de banco e validação de parâmetros sem tocar no PostgreSQL!
🎯 Slide 3: Cobertura de Testes com go test -cover
go test -v -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim