O teste de integração garante que módulos ou componentes combinados em grupos sejam testados. Esse processo visa verificar a eficiência e a segurança da comunicação entre sistemas. Ele se torna essencial para garantir que o software funcione sem erros de integração. Em resumo, o teste de integração testa desde a chamada a sua API ou CLI, até a persistência de dados no banco de dados ou integrações com terceiros.
Vamos considerar uma API que gerencia jogos de video games onde ela precisa hora conectar no banco de dados, hora conectar em uma API de terceiros para buscar informações adicionais. Para testar essa API, podemos usar o Docker Compose para criar um ambiente de teste que inclua o banco de dados e a API de terceiros. No nosso exemplo, o banco de dados será o PostgreSQL e para a API de terceiros, vamos usar o Mock Server.
Abaixo está um exemplo completo de cada arquivo que precisamos para configurar o ambiente de teste com Docker Compose e os arquivos de Dockerfile para a nossa API e testes.
# DockerfileFROM golang:1.24-bullseye AS buildWORKDIR /src# Copy everything but defined in docker ignore fileCOPY . .# BuildRUN go mod vendorRUN make build-linux-amd64###################### Build final image ######################FROM alpine AS bin# Copy from buildCOPY --from=build /src/build/video-game-api-linux-amd64 ./video-game-apiCOPY --from=build /src/db ./db# Specify the container's entrypoint as the actionENTRYPOINT["./video-game-api"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Dockerfile.testFROM golang:1.24-bullseyeWORKDIR /src# Copy everything but defined in docker ignore fileCOPY . .# Download dependenciesRUN go mod vendorCMD["go","test","-v","-race","-timeout=30s","-tags=integration","./test/integration_test/..."]
Agora que temos o ambiente configurado, podemos escrever os testes de integração. Vamos criar um arquivo de teste chamado console_http_test.go dentro do diretório test/integration_test.
Obtenha a URL da API a partir da variável de ambiente VIDEO_GAME_API_URL. Nesse caso ela é definida no docker-compose.yaml e aponta para o serviço video-game-api.
1
apiURL:=os.Getenv("VIDEO_GAME_API_URL")
Crie uma nova requisição HTTP para a rota /consoles/{id}.