Kaike Castro
Posted on August 1, 2023
Olá, pessoal! Hoje vamos aprender como criar testes unitários em Golang utilizando a Poke API como exemplo. Os testes unitários são fundamentais para garantir a qualidade do código e facilitar a manutenção. Vamos lá!
Pré-requisitos:
- Ter o Go (Golang) instalado no seu sistema.
- Ter um editor de código de sua preferência (VSCode, GoLand, Sublime, etc.).
Passo 1: Configuração do Ambiente
Certifique-se de ter o ambiente de desenvolvimento Go configurado corretamente em sua máquina. Você pode verificar isso executando o comando go version no terminal.
Passo 2: Instalação das Dependências
Para realizar as requisições à Poke API, vamos utilizar a biblioteca "net/http" do Go. Certifique-se de que ela está instalada. Caso não esteja, execute o seguinte comando no terminal:
go get -u net/http
Passo 3: Criando o Código
Agora, vamos criar nosso código e testes. Vamos criar uma função que consulta a Poke API para obter informações sobre um Pokémon específico. O código para isso seria o seguinte (vamos supor que ele está no arquivo pokeapi.go):
package main
import (
"encoding/json"
"fmt"
"net/http"
)
// Pokemon representa a estrutura de dados do Pokémon
type Pokemon struct {
Name string `json:"name"`
Height int `json:"height"`
Weight int `json:"weight"`
BaseExperience int `json:"base_experience"`
}
// GetPokemonInfo faz uma requisição à Poke API e retorna as informações de um Pokémon específico.
func GetPokemonInfo(pokemonName string) (*Pokemon, error) {
url := fmt.Sprintf("https://pokeapi.co/api/v2/pokemon/%s", pokemonName)
resp, err := http.Get(url)
if err != nil {
return nil, err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return nil, fmt.Errorf("failed to get Pokemon info: %s", resp.Status)
}
var pokemon Pokemon
if err := json.NewDecoder(resp.Body).Decode(&pokemon); err != nil {
return nil, err
}
return &pokemon, nil
}
Passo 4: Criando os Testes Unitários
Agora vamos criar os testes unitários para a função GetPokemonInfo. Para isso, criaremos um novo arquivo chamado pokeapi_test.go:
package main
import (
"testing"
)
func TestGetPokemonInfo(t *testing.T) {
pokemonName := "pikachu"
pokemon, err := GetPokemonInfo(pokemonName)
if err != nil {
t.Errorf("Error while getting Pokemon info: %v", err)
}
if pokemon.Name != pokemonName {
t.Errorf("Expected Pokemon name '%s', but got '%s'", pokemonName, pokemon.Name)
}
// Aqui você pode adicionar mais verificações para os outros campos do Pokémon
}
Passo 5: Executando os Testes
Agora que os testes estão prontos, vamos executá-los para verificar se tudo está funcionando corretamente. No terminal, navegue até o diretório onde estão os arquivos pokeapi.go e pokeapi_test.go e execute o seguinte comando:
go test
Se tudo estiver correto, você verá uma mensagem indicando que os testes passaram. Caso algum teste falhe, a mensagem de erro detalhará o que aconteceu.
E pronto! Agora você aprendeu como criar testes unitários em Golang utilizando a Poke API como exemplo. Testes unitários são uma prática importante para garantir a robustez e confiabilidade de suas aplicações. Continue praticando e aprimorando suas habilidades em Go! 🚀
Posted on August 1, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.