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! 🚀
 

 
    
Top comments (0)