Sobes.tech
Junior — Middle

Como implementas objetos substitutos para testes unitários?

sobes.tech IA

Resposta da IA

Em Go, para testes unitários, objetos substitutos (mocks, stubs) são geralmente implementados usando interfaces.

  1. Defina uma interface que descreva o comportamento necessário.
  2. Crie uma estrutura que implemente essa interface, com a lógica necessária para o teste.

Exemplo:

package service

type Database interface {
    GetUser(id int) (User, error)
}

type User struct {
    ID int
    Name string
}

// Implementação do objeto substituto para o teste

type MockDB struct {}

func (m *MockDB) GetUser(id int) (User, error) {
    return User{ID: id, Name: "Test User"}, nil
}

// No teste, pode-se usar MockDB em vez do banco de dados real

Também é possível usar bibliotecas externas para mocks, como gomock ou testify/mock.