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)
}
}