Junior — Middle
Moqs nos testes e por que eles são necessários
sobes.tech IA
Resposta da IA
Mocks (simulações) em testes são objetos falsos que imitam o comportamento de dependências reais do sistema. São necessários para isolar o código testado de componentes externos, para que os testes sejam rápidos, confiáveis e reproduzíveis.
Por exemplo, se uma função depende de um banco de dados, em vez de uma conexão real, pode-se usar um mock que retorna dados predefinidos. Isso permite verificar a lógica da função sem risco de falhas devido a problemas com o banco de dados.
Em Go, os mocks são frequentemente criados usando interfaces e bibliotecas especiais, como gomock ou testify/mock.
Exemplo de um mock simples em Go:
// Interface
type DB interface {
GetUser(id int) (User, error)
}
// Mock
type MockDB struct {}
func (m *MockDB) GetUser(id int) (User, error) {
return User{ID: id, Name: "Test User"}, nil
}
// No teste
func TestGetUserName(t *testing.T) {
db := &MockDB{}
user, err := db.GetUser(1)
if err != nil {
t.Fatal(err)
}
if user.Name != "Test User" {
t.Errorf("nome de usuário inesperado")
}
}