Sobes.tech
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")
     }
 }