DEV Community

Kaike Castro
Kaike Castro

Posted on

Criando Testes Unitários em Golang usando a Poke API

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
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)