Sobes.tech
Junior — Middle

Qual é o papel principal e a aplicação dos objetos Mock no processo de teste?

sobes.tech IA

Resposta da IA

Os objetos mock são utilizados nos testes para simular o comportamento de componentes reais do sistema com os quais o módulo testado interage. O papel principal do mock é isolar o código testado de dependências externas (por exemplo, bases de dados, serviços de rede) para que os testes sejam rápidos, confiáveis e reproduzíveis.

A utilização de objetos mock permite:

  • Verificar as interações com as dependências (por exemplo, chamadas de métodos, parâmetros passados).
  • Simular diferentes cenários de funcionamento das dependências (sucesso, erros, atrasos).
  • Simplificar a configuração do ambiente de teste.

Exemplo em Go usando interfaces e mocks para testar uma função que chama um serviço externo:

package service

type ExternalAPI interface {
    GetData(id string) (string, error)
}

func ProcessData(api ExternalAPI, id string) (string, error) {
    data, err := api.GetData(id)
    if err != nil {
        return "", err
    }
    return "Processed: " + data, nil
}

// No teste, criamos um mock:

type MockAPI struct {}

func (m *MockAPI) GetData(id string) (string, error) {
    if id == "123" {
        return "mocked data", nil
    }
    return "", fmt.Errorf("not found")
}

// Teste
func TestProcessData(t *testing.T) {
    mock := &MockAPI{}
    result, err := ProcessData(mock, "123")
    if err != nil || result != "Processed: mocked data" {
        t.Errorf("resultado inesperado: %v, erro: %v", result, err)
    }
}